在新的 Promise() 建構子中使用 async/await 是反模式嗎?
非同步程式設計可能具有挑戰性,特別是在處理巢狀回調時。為了簡化這一點,ES6 引入了 async/await 語法。但是,在 new Promise() 的建構子中使用 async/await 時,需要小心。
在提供的範例中:
return new Promise(async (resolve, reject) => { eachLimit((await getAsyncArray), 500, (item, callback) => { // do other things that use native promises. }, (error) => { if (error) return reject(error); // resolve here passing the next value. }); });
您正在使用 wait 呼叫 getAsyncArray ,它傳回一個 Promise,但在 Promise 建構函數的執行器函數內。這被稱為「Promise 建構函式反模式」。
此模式的主要危險是錯誤可能無法正確處理。非同步性可能會產生不可預測的行為,而利用 async/await 會使發現潛在問題變得更加困難。
例如,getAsyncArray 函數中的拼字錯誤會導致 TypeError,但它可能不會被eachLimit 回呼捕獲錯誤處理。但是,如果刪除 async/await,則錯誤將被拋出到 Promise 構造函數之外並進行適當處理。
總之,雖然在 Promise() 的建構子中使用 async/await 可能看起來很方便,由於潛在的錯誤處理問題,它是一種反模式。相反,請考慮在 Promise 建構函數之外使用 async/await 以確保正確的錯誤傳播和程式碼可維護性。
以上是在「Promise」建構函式中使用「async/await」是反模式嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!