在Angular 6 中,建議開發者不要使用以下程式碼:
await someFunction().then(result => { console.log(result); });
關心的不是等待Promise 鍊是沒有用的-someFunction() 確實回傳一個Promise,兩者都可以片段的工作原理相同。問題出在其他地方。
混亂是由混合非同步程式設計風格引起的。 ES2017 中引入的非同步函數引入了await 關鍵字。當await 在非同步函數中使用時,它會暫停函數的執行並等待promise 解析。這簡化了非同步編程,使閱讀和理解程式碼變得更加容易。
另一方面,承諾鍊是一種較舊的非同步程式設計方法。它涉及使用 .then() 將多個 Promise 連結在一起。雖然這種方法仍然有效,但與await混合使用時可能會造成混亂。
例如,如果您想在 console.log() 調用的位置添加另一個 Promise 呼叫或有條件地從函數返回,語義變得不清楚。您可以像在函數中的其他地方一樣在回調中使用await嗎?您需要從 .then() 回呼回傳結果嗎?是否有可能從外部函數返回?
為了避免這些複雜性,建議堅持一種非同步程式設計風格,最好使用await 來保持一致性。透過這樣做,您可以簡化程式碼並降低引入錯誤的風險。更簡潔乾淨的版本是:
const result = await someFunction(); console.log(result);
以上是Angular 6 中等待 Promise 鏈是否有程式碼異味?的詳細內容。更多資訊請關注PHP中文網其他相關文章!