對于這四個異步請求荣恐,要判斷都執(zhí)行完成最簡單的方式就是通過GCD的group來實現(xiàn):
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, queue, ^{ /*任務(wù)a */ });
dispatch_group_async(group, queue, ^{ /*任務(wù)b */ });
dispatch_group_async(group, queue, ^{ /*任務(wù)c */ });
dispatch_group_async(group, queue, ^{ /*任務(wù)d */ });
dispatch_group_notify(group,dispatch_get_main_queue(), ^{
// 在a、b累贤、c叠穆、d異步執(zhí)行完成后,會回調(diào)這里
});
當(dāng)然臼膏,我們還可以使用非常老套的方法來處理硼被,通過四個變量來標(biāo)識a、b渗磅、c嚷硫、d四個任務(wù)是否完成,然后在runloop中讓其等待始鱼,當(dāng)完成時才退出runloop仔掸。但是這樣做會讓后面的代碼得不到執(zhí)行,直到Run loop執(zhí)行完畢医清。
要求順序執(zhí)行起暮,那么可以將任務(wù)放到串行隊列中,自然就是按順序來異步執(zhí)行了会烙。