2 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個贊
這是Promise構(gòu)造函數(shù)antipattern的async / await版本!
從來沒有 過使用async function作為一個Promise執(zhí)行程序功能(即使你可以把它工作1)!
[1:通過調(diào)用resolve而reject不是使用returnand throw語句]
通過“異步”他們不是指async功能,所以我認(rèn)為他們的解釋在這里不適用
他們也可以。一個簡單的例子就不能工作
new Promise(async function() {
await delay(…);
throw new Error(…);
})
相當(dāng)于
new Promise(function() {
return delay(…).then(function() {
throw new Error(…);
});
})
現(xiàn)在很清楚,該代碼throw位于異步回調(diào)中。
該P(yáng)romise構(gòu)造也只能望塵莫及同步異常,和一個async function 不會拋出 -它總是會返回一個承諾(這可能會遭到拒絕,雖然)。當(dāng)promise正在等待resolve被調(diào)用時,該返回值將被忽略。

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個贊
您實(shí)際上可以做的更短:return delay(…).then(function() { throw new Error(…); });
添加回答
舉報