簡體   English   中英

承諾解決后從函數返回結果

[英]Returning a result from a function after a promise resolves

所以我必須將一個簡單的布爾值傳遞給一個庫。 為了獲得返回的值,我必須評估promise的分辨率(它進行異步調用)。 所以我有這樣的事情:

import {funcThatReturnsPromise} from 'some-module';

function someFunc(someParam) {
   funcThatReturnsPromise(someParam).then(theResult => someOtherFunc(theResult));
} 

function someOtherFunc(someParam) {
   ....
   return true; // do some things and return a bool
}

問題在於這會返回承諾,而不是布爾值。 我不能(不分叉第三方項目)修改調用代碼來處理承諾而不是布爾。 我知道promise的全部目的是能夠處理異步調用而不嵌套,但是在這種情況下,我需要同步處理事情。 我不確定該怎么做。 我瀏覽了文檔,但沒有找到一種方法。 有人可以在這里指出正確的方向嗎?

處理promise和異步代碼可能會造成混淆,但是關鍵是不要使其過於復雜。 不要試圖浪費時間,要了解代碼在此結構中的位置。

如果您希望一段代碼在承諾的解決之后運行,則它屬於.then回調。 聽起來您有一半的代碼來自回調,一半的代碼來自回調。

稍微擴展一下代碼,我假設您正在嘗試做一些事情來達到目的;

function someFunc(someParam) {
   funcThatReturnsPromise(someParam).then(theResult => someOtherFunc(theResult));

   if(someOtherFunc(theResult)){
       alert('A RESULT!');
   }
} 

function someOtherFunc(someParam) {
   ....
   return true;
}

但是你應該做的是

function someFunc(someParam) {
   funcThatReturnsPromise(someParam).then(theResult => {
       funcResult = someOtherFunc(theResult)
       if(funcResult){
           alert('A RESULT!')
       }
   });

} 

function someOtherFunc(someParam) {
   ....
   return true;
}

暫無
暫無

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

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