iOS異步網(wǎng)絡請求需要等待其返回數(shù)據(jù),才能執(zhí)行下一步操作

項目中有個需求:點擊下一步時,根據(jù)網(wǎng)絡請求返回的值,來判斷是否能讓用戶繼續(xù)操作(跳轉(zhuǎn))
  • 需要等異步網(wǎng)絡請求完成之后返回值,才再執(zhí)行下一步代碼,可以使用以下方法
    • 1 、下面兩個行代碼需要成對存在,否則無效!
      • 第一行代碼寫在請求之前
      • 第二行代碼寫在請求完成之后返回值的里面
    dispatch_group_enter
    dispatch_group_leave
  • 2、notify 等所有任務執(zhí)行完畢時再執(zhí)行。
    • 最后把等待網(wǎng)絡請求完成之后才執(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í)行");
    });
image.png

來著 stackoverflow

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • ———————————————回答好下面的足夠了---------------------------------...
    恒愛DE問候閱讀 1,835評論 0 4
  • 史上最全的iOS面試題及答案 iOS面試小貼士———————————————回答好下面的足夠了----------...
    Style_偉閱讀 2,557評論 0 35
  • 多線程、特別是NSOperation 和 GCD 的內(nèi)部原理。運行時機制的原理和運用場景。SDWebImage的原...
    LZM輪回閱讀 2,108評論 0 12
  • __block和__weak修飾符的區(qū)別其實是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用,...
    LZM輪回閱讀 3,584評論 0 6
  • 人生這棵果樹什么果子都結(jié),就是不結(jié)如果。人的一生,有許多的岔路口,我們永遠在不停的做選擇,站在十字路口迷茫、彷徨,...
    好運常伴_美兒閱讀 290評論 0 0

友情鏈接更多精彩內(nèi)容