問題:
在非同步程式設計中,轉換是有益的回調到承諾。但是,像 setTimeout 這樣的非基於 Promise 的函數預設不會立即傳回 Promise。本文探討如何建立可在 setTimeout 等函數的上下文中使用的 Promise。
初步想法:
提供的範例定義了一個 setTimeout 函數回呼。要建立 Promise,需要將 setTimeout 回呼包裝在 Promise 建構函數的執行函數中。
修訂的解決方案:
使用現代JavaScript 和Promises,以下程式碼示範如何從setTimeout 建立Promise:
function later(delay) { return new Promise(resolve => setTimeout(resolve, delay)); }
這個後面的函數需要延遲並且傳回一個在指定延遲後解決的承諾。然後,您可以在非同步程式碼中使用傳回的 Promise。
高級注意事項:
對於更高級的場景,請考慮後面函數的以下變體:
結論:
從回調建立 Promise像 setTimeout 一樣,可以更輕鬆地將非同步操作整合到程式碼庫中。透過了解如何實現此技術,您可以提高非同步 JavaScript 應用程式的可讀性和可維護性。
以上是如何將 setTimeout 回調轉換為 Promise?的詳細內容。更多資訊請關注PHP中文網其他相關文章!