簡體   English   中英

函數是否可以從異步塊返回值

[英]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;

}

是否有必要將計算塊放入主線程中的di​​spatch_sync或其他內容中?

不,你不能那樣做。 啟動異步功能的目的是使調用者可以繼續進行其他工作(也許啟動其他異步功能?)。

假設您使用的是dispatch_async() - 來自docs

dispatch_async()函數立即返回,而無需等待調用該塊:

如果您希望能夠處理來自調用方的塊結果,則可以將對調用者的引用作為您塊的參數傳遞。 然后,當您的異步任務完成時,調用調用者的方法之一以傳遞“返回值”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM