這個問題在這里已經有了答案: if-else flow in promise (bluebird) 3 個答案 2 小時前關閉。
無論是呼叫同步函式還是呼叫異步函式,我都需要呼叫一個通用函式。
這是我第一次寫的,但這是不正確的,因為foo將在異步函式完成之前呼叫。
function main(element) {
if (element.id === 'sync') {
syncFunction();
} else {
asyncFunction();
}
foo();
}
所以,我想出了這個,但在這里我覺得我重復了foo太多次電話。有沒有更好的辦法?
function main(element) {
if (element.id === 'sync') {
syncFunction();
foo();
} else {
asyncFunction().then(() => {
foo();
});
}
}
我可以使用async/await并更好地重構它,但是該代碼最終將運行的位置不支持它。有沒有辦法使用 Promise 更好地撰寫這個?
uj5u.com熱心網友回復:
如果將呼叫結果放入 a中,則可以無條件地Promise.resolve()鏈接到它。.then
function main(element) {
Promise.resolve((element.id === 'sync' ? syncFunction : asyncFunction)())
.then(foo);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/477451.html
標籤:javascript 承诺
