iOSfor迴圈裡的非同步任務完成再進行其他操作

2021-09-12 11:10:11 字數 1082 閱讀 8140

// 1.建立乙個序列佇列,保證for迴圈依次執行

dispatch_queue_t serialqueue = dispatch_queue_create("serialqueue", dispatch_queue_serial);

// 2.非同步執行任務

dispatch_async(serialqueue, ^];

[datatask resume];

nslog(@"上傳動態**到阿里雲成功:%@", fileinfo.filepath);

nsstring *imgurl = fileinfo.object;

[self.imageurls addobject:imgurl];

if (self.imageurls.count == self.imagepaths.count)

}nslog(@"其他操作");

for (nsnumber *num in tamparray)

});

// 建立佇列組,可以使多個網路請求非同步執行,執行完之後再進行操作

dispatch_group_t group = dispatch_group_create();

//建立全域性佇列

dispatch_queue_t queue = dispatch_get_global_queue(0, 0);

dispatch_group_async(group, queue, ^ failure:^(nsurlsessiondatatask * _nullable task, nserror * _nonnull error) ];

//訊號量減1,如果》0,則向下執行,否則等待

dispatch_semaphore_wait(semaphore, dispatch_time_forever);

}});// 當所有佇列執行完成之後

dispatch_group_notify(group, dispatch_get_global_queue(dispatch_queue_priority_default, 0), ^);

}else);

}});

學習完迴圈的感悟

上週剛剛學完迴圈,感覺迴圈很好用,把一些問題簡單化了,但同時也是更難理解了,畢竟上天是公平的。我也終於體會到c語言的難度和魅力了。迴圈就是在滿足乙個語句的情況下不斷地進行另乙個語句的運算或者另一些語句的運算。分為三種 for迴圈 while迴圈和do while迴圈。for迴圈是最簡潔的迴圈表達形式...

非同步任務 關於非同步任務的設計探索(1)

開票員給客戶開通代收的業務,並且與客戶簽約 即簽訂代收協議 主管審核客戶的簽約業務,若拒絕,則開票人需要通知客戶修改資料重新提交 若同意,則簽約成功,流程結束。自己分析了一下之前的錯誤,發現雖然分析了整體的業務流程 角色的許可權與上下游,但沒有去分析這個任務是同步還是非同步的,導致與開發同學也吵了很...

nodejs裡的非同步程式設計

指的有像對檔案的操作 像是觸發的事件等 js引擎中執行的一些普通語句for語句 var語句,普通函式的呼叫啊,它們是首先執行完。才會執行像readfile 這些非同步api。它們具有等待的特點。1.在這些非同步api外面再套一層promise函式,將裡面readfile 執行的結果,作為引數傳遞出去...