一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - IOS開發中異步網絡請求上實現同步邏輯

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

2021-03-10 16:14余成海 IOS

這篇文章主要介紹了IOS開發中異步網絡請求上實現同步邏輯的相關資料,需要的朋友可以參考下

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

前提:

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

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

1.循環異步拼組

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- (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.信號量異步轉同步

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
__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

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

延伸 · 閱讀

精彩推薦
  • IOSiOS中MD5加密算法的介紹和使用

    iOS中MD5加密算法的介紹和使用

    MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特征生成一段32位的數字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文...

    LYSNote5432021-02-04
  • IOSiOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果的相關資料,需要的朋友可以參考下...

    jiangamh8882021-01-11
  • IOSiOS中UILabel實現長按復制功能實例代碼

    iOS中UILabel實現長按復制功能實例代碼

    在iOS開發過程中,有時候會用到UILabel展示的內容,那么就設計到點擊UILabel復制它上面展示的內容的功能,也就是Label長按復制功能,下面這篇文章主要給大...

    devilx12792021-04-02
  • IOSiOS開發技巧之狀態欄字體顏色的設置方法

    iOS開發技巧之狀態欄字體顏色的設置方法

    有時候我們需要根據不同的背景修改狀態欄字體的顏色,下面這篇文章主要給大家介紹了關于iOS開發技巧之狀態欄字體顏色的設置方法,文中通過示例代碼...

    夢想家-mxj8922021-05-10
  • IOSiOS開發之視圖切換

    iOS開發之視圖切換

    在iOS開發中視圖的切換是很頻繁的,獨立的視圖應用在實際開發過程中并不常見,除非你的應用足夠簡單。在iOS開發中常用的視圖切換有三種,今天我們將...

    執著丶執念5282021-01-16
  • IOS詳解iOS中多個網絡請求的同步問題總結

    詳解iOS中多個網絡請求的同步問題總結

    這篇文章主要介紹了詳解iOS中多個網絡請求的同步問題總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    liang199111312021-03-15
  • IOSiOS實現控制屏幕常亮不變暗的方法示例

    iOS實現控制屏幕常亮不變暗的方法示例

    最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關于利用iOS如何實現控制屏幕常亮不變暗的方法,文中給出了詳細的...

    隨風13332021-04-02
  • IOSiOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)

    iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和

    這篇文章主要介紹了iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)的相關資料,需要的朋友可以參考下...

    CodingFire13652021-02-26
主站蜘蛛池模板: 东北老妇露脸xxxxx | 成人免费福利网站在线看 | 免费一级欧美大片在线观看 | 成人女人天堂午夜视频 | 操骚0| 翁熄性放纵交换300章 | 小小水蜜桃视频高清在线观看免费 | 顶级欧美做受xxx000大乳 | 奇米影视7777久久精品 | 丁香六月色婷婷综合网 | 亚洲欧美天堂综合久久 | 美女翘臀跪床被打屁股作文 | a一级黄 | 日本不卡免免费观看 | 波多野结衣同性系列698 | 国产亚洲精品第一综合linode | 日韩去日本高清在线 | xxnx日本免费护士 | 国产永久免费视频m3u8 | 无人视频在线观看完整版高清 | 欧美白人猛性xxxxx69交 | 青青成人福利国产在线视频 | 国产精品国色综合久久 | 国产精品中文 | 99亚洲 | 亚洲人成网站在线观看播放青青 | 手机在线免费观看日本推理片 | 99久久精品免费观看区一 | 国产精品视频一区二区三区w | 国产精品青青青高清在线观看 | 香蕉国产人午夜视频在线 | 大胆暴露亚洲美女xxxx | 视频在线观看入口一二三2021 | xnxx18美女 | 男女性刺激爽爽免费视频 | 精品免费tv久久久久久久 | 视频一区二区在线 | 日本www午夜色在线视频 | 女子监狱第二季未删减在线看 | 调教人妖| 色哟哟国产成人精品 |