項目中有個需求:點擊下一步時荆陆,根據(jù)網(wǎng)絡(luò)請求返回的值滩届,來判斷是否能讓用戶繼續(xù)操作(跳轉(zhuǎn))
- 需要等異步網(wǎng)絡(luò)請求完成之后返回值,才再執(zhí)行下一步代碼被啼,可以使用以下方法
- 1 帜消、下面兩個行代碼需要成對存在,否則無效浓体!
- 第一行代碼寫在請求之前
- 第二行代碼寫在請求完成之后返回值的里面
dispatch_group_enter
dispatch_group_leave
- 2泡挺、notify 等所有任務(wù)執(zhí)行完畢時再執(zhí)行。
- 最后把等待網(wǎng)絡(luò)請求完成之后才執(zhí)行的代碼寫在
dispatch_group_notify
里面
dispatch_group_notify
dispatch_group_t group = dispatch_group_create();
dispatch_group_enter(group);
NSURLSessionDataTask *task = [session dataTaskWithURL:[NSURL URLWithString:@"https://www.baidu.com"] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSLog(@"請求 1 的值");
dispatch_group_leave(group);
}];
[task resume];
dispatch_group_enter(group);
NSURLSessionDataTask *task2 = [session dataTaskWithURL:[NSURL URLWithString:@"https://www.baidu.com"] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSLog(@"請求 2 的值");
dispatch_group_leave(group);
}];
[task2 resume];
dispatch_group_notify(group, dispatch_get_main_queue(), ^(){
NSLog(@"等待執(zhí)行");
});
來著 stackoverflow
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者