如何在 JavaScript 中在一個 Promise 內呼叫另一個 Promise?


在使用 JavaScript 時,您可能會發現需要在一個 Promise 內呼叫另一個 Promise。雖然這看起來像是一項艱鉅的任務,但一旦您理解了 Promise 的基礎知識,它實際上就非常簡單了。在本文中,我們將討論如何在 JavaScript 中在一個 Promise 內呼叫另一個 Promise。

Promise 的基礎知識

為了理解如何在另一個 Promise 內呼叫一個 Promise,首先必須理解 Promise 的基礎知識。Promise 是一個物件,它代表非同步操作的最終結果。Promise 用於在 JavaScript 中以更同步的方式處理非同步操作。

在一個 Promise 內呼叫另一個 Promise

現在我們對 Promise 有了基本的瞭解,讓我們討論如何在另一個 Promise 內呼叫一個 Promise。首先,您需要建立一個返回 Promise 的函式。此函式應接收一個輸入,並根據輸入來解析或拒絕 Promise。

接下來,您需要建立一個 Promise,並將您在上一步中建立的函式作為輸入傳遞。建立 Promise 後,您可以呼叫作為輸入傳遞的函式。這將返回一個已解析或已拒絕的 Promise。

示例 1

以下是完整的可執行程式碼示例:

<!doctype html> <html> <head> <title>Examples</title> </head> <body> <div id="result1"></div> <script> function func1(input) { return new Promise(function(resolve, reject) { if(input === "resolved") { resolve("resolved"); } else { reject("rejected"); } }); } var promise = new Promise(function(resolve, reject) { func1("resolved").then(function(result) { resolve(result); }).catch(function(error) { reject(error); }); }); promise.then(function(result) { document.getElementById("result1").innerHTML = result // "resolved" }).catch(function(error) { document.getElementById("result1").innerHTML = error // "rejected" }); </script> </body> </html>

在上面的程式碼示例中,我們建立了一個返回 Promise 的函式。此函式接收一個輸入,並根據輸入來解析或拒絕 Promise。然後,我們建立了一個 Promise,並將我們在上一步中建立的函式作為輸入傳遞。建立 Promise 後,我們可以呼叫作為輸入傳遞的函式。這將返回一個已解析或已拒絕的 Promise。

示例 2

以下是另一個在一個 Promise 內呼叫另一個 Promise 的示例:

<html> <body> <h3>Calling a promise inside another promise</h3> <script> let firstPromise = new Promise((resolve, reject) => { resolve("Hello, "); }) .then((result) => { document.write(result); return new Promise((resolve, reject) => { resolve(result + "<br> Welcome to JavaScript!"); }) .then((result) => { document.write(result); }); }); </script> </body> </html>

在一個 Promise 內呼叫另一個 Promise 的好處

在一個 Promise 內呼叫另一個 Promise 有幾個好處。第一個好處是它允許您以更同步的方式處理非同步操作。第二個好處是它使您的程式碼更具可讀性和更易於理解。

在一個 Promise 內呼叫另一個 Promise 的缺點

在一個 Promise 內呼叫另一個 Promise 有幾個缺點。第一個缺點是它可能使您的程式碼更復雜。第二個缺點是它可能使您的程式碼效能降低。

結論

總之,在一個 Promise 內呼叫另一個 Promise 是一種以更同步的方式處理非同步操作的好方法。但是,務必記住,此技術可能會使您的程式碼更復雜且效能降低。

更新於:2022年9月14日

5000+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告