[英]Can a function return a value from an asynchronous block
假設此代碼無障礙
int calculateValue (int a, int b) {
return doSomeStuff(a,b);
}
現在假設函數依賴於異步對象。 所以我將異步部分聲明為這樣的塊
int calculateValue (int a, int b) {
int (^myBlock)(int a, int b) = ^int(int a, int b) {
// do some complex asynchronous stuff
return result;
};
// can I do this?
return myBlock;
}
是否有必要將計算塊放入主線程中的dispatch_sync或其他內容中?
不,你不能那樣做。 啟動異步功能的目的是使調用者可以繼續進行其他工作(也許啟動其他異步功能?)。
假設您使用的是dispatch_async()
- 來自docs :
dispatch_async()函數立即返回,而無需等待調用該塊:
如果您希望能夠處理來自調用方的塊結果,則可以將對調用者的引用作為您塊的參數傳遞。 然后,當您的異步任務完成時,調用調用者的方法之一以傳遞“返回值”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.