![](/img/trans.png)
[英]How to create a function returning a promise that resolves after inner promise resolves
[英]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.