国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

IOS開發中異步網絡請求上實現同步邏輯

2019-10-21 18:47:43
字體:
來源:轉載
供稿:網友

IOS開發中異步網絡請求上實現同步邏輯

前提:

可能遇到一些問題,比如上傳多個數據,需要等多個數據上傳成功后做一定的處理,而且一個個上傳,萬一哪個上傳失敗了,后面就不需要上傳了,直接報錯。

之前ASI的網絡庫中是有同步請求的接口,所以很好處理,AFNetwork的網絡庫只有異步的網絡請求,該怎么實現呢?

1.循環異步拼組

- (void)uploadFile:(NSArray *)imageArray atIndex:(NSInteger)index imagesCount:(NSInteger)count completeBlock:(uploadCompleteBlock)block { FNCircleImage *aTCImage = imageArray[index]; NSString *filepath = aTCImage.localFilePath; [self.resourceManager upload:filepath progress:nil completion:^(NSString * _Nullable urlString, NSError * _Nullable error) {  if (error == nil) {   aTCImage.remoteUrl = urlString;   NSInteger idx = index + 1;   if (idx >= count) {    block(nil);   } else {    [self uploadFile:imageArray atIndex:idx imagesCount:count completeBlock:block];   }  } else {   block(error);  } }];}

2.信號量異步轉同步

__block NSError *e = nil;[imageArray enumerateObjectsUsingBlock:^(NSString *filePath, NSUInteger idx, BOOL * _Nonnull stop) { __block dispatch_semaphore_t t = dispatch_semaphore_create(0); [self upload:filepath progress:nil completion:^(NSString * _Nullable urlString, NSError * _Nullable error) {  if (error == nil) {     } else {   e = error;   *stop = YES;  }  dispatch_semaphore_signal(t); }]; dispatch_semaphore_wait(t, DISPATCH_TIME_FOREVER);}];

3.NSOperationQueue可控隊列

1).繼承NSOperation實現上傳邏輯,完成發出通知或者block回調

2).用上傳數據創建Operation數組,加入NSOperationQueue中執行

3).根據完成回調的結果和個數判斷結果,如果中間有失敗,可以關閉未執行的Operation

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

 

注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金秀| 广汉市| 会昌县| 新宁县| 肥城市| 伊春市| 彰化市| 蒙自县| 奇台县| 海门市| 九寨沟县| 宝坻区| 平定县| 福清市| 佛冈县| 舞阳县| 湘潭县| 鲁山县| 依兰县| 木兰县| 孟村| 郯城县| 临武县| 庄河市| 遵义县| 黑山县| 肇源县| 平舆县| 乌恰县| 武强县| 彰化市| 镇雄县| 文化| 四子王旗| 安图县| 乌鲁木齐县| 繁昌县| 黔南| 婺源县| 格尔木市| 清镇市|