В моем случае, когда приложение запускается, я хочу назвать 3 веб-API, используя NSURLSessionDataTask
. У меня есть 3 разных метода для каждого API и внутри каждого метода есть один NSURLSessionDataTask
.Как выполнить несколько NSURLSessionDataTask серийно?
Я хочу сформировать свой код таким образом, чтобы эти 3 метода выполнялись серийно. Поскольку метод B зависит от ответа метода A, а метод C зависит от ответа метода B. Каждый метод также выполняет некоторые операции с базой данных после получения ответа API. Итак, мне нужно серийное исполнение methodA
, methodB
и methodC
.
Я знаю, что это логичная вещь, но я хочу использовать dispatch_semaphore_t
или dispatch_group_wait
, но у меня нет абсолютно никакого понятия о том, как я могу использовать их в сочетании с NSURLSessionDataTask
.
Я попытался с этим:
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
[self syncA:^(BOOL success) {
NSLog(@"syncA — Completed");
dispatch_semaphore_signal(semaphore);
}];
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
[self syncB:^(BOOL success) {
NSLog(@"syncB — Completed");
dispatch_semaphore_signal(semaphore);
}];
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
[self syncC:^(BOOL success) {
NSLog(@"syncC — Completed");
dispatch_semaphore_signal(semaphore);
}];
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
NSLog(@"************* END OF SYNC *************");
Приведенный выше код застрял на 1-й метод .. Пожалуйста, помогите мне .. спасибо заранее !!!
Использование NSOperationQueue для любых последовательных операций. –
Концептуально, 'NSURLSession' - это очередь операций !!! – NSPratik
Посмотрите на этот вопрос http://stackoverflow.com/questions/21198404/nsurlsession-with-nsblockoperation-and-queues –