在本教程中,我們將討論 JavaScript 中的 Promise 鏈。在轉向 Promise 鏈之前,我們先來談談什么是 Promise
因此,我們知道 JavaScript 是單線程的,這意味著不允許兩個函數同時運行,因為我們只有一個調用堆棧,如下所示,它有一個要執行的函數
當一個函數完成執行時,另一個函數開始執行,因此為了實現兩個或多個函數同時運行,我們在 JavaScript 示例中使用異步編程 – setTimeout 函數,它接受一個回調函數和指定的時間,之后它將執行執行該函數。
setTimeout(function cT(){ console.log("I am here after 5 seconds") }, 5000);
登錄后復制
因此,我們對異步操作使用 Promise,它給出異步操作的結果及其完成或失敗。
就像在現實生活中一樣,我們以與做出承諾相同的方式承諾完成任何工作,并且它存在于三種狀態之一。
-
待處理 – 這代表初始狀態,表示它既未完成也未拒絕。
Fulfilled – 這表示我們分配的操作已成功完成。
拒絕 – 此狀態表示操作無法執行,它被拒絕。
異步方法返回一個值,但它不返回最終值,而是返回一個將來為該函數提供值的承諾。
我們在 Promise 語句之后使用 then() 方法執行 Promise,如果由于某些錯誤而被拒絕,則將使用 catch 塊進行處理。
如何在 JavaScript 中聲明 Promise?
let promise = new Promise(function (resolve, reject) { return resolve("Hello I am resolved"); });
登錄后復制
這里的promise內部有一個函數,稱為回調函數,它有一個參數作為兩個方法resolve()和reject(),正如我們已經知道的那樣從上面關于兩者的解釋來看。
因此,這里的resolve確保我們給出的函數的成功完成,而reject將確保它對給定的可執行回調函數不成功完成的責任。
示例 1
讓我們看看使用 Set 查找字符串中唯一字符的程序。
<!DOCTYPE html> <html> <head> <title>Promise chaining in JavaScript</title> </head> <body> <h3> Execute a Promise we receive</h3> <p id ="result"></p> <script> let promise = new Promise(function (resolve, reject) { return resolve("Hello I am resolved"); }); promise.then(function(value) { console.log(value); document.getElementById("result").innerHTML += value; }) </script> </body> </html>
登錄后復制
在上面里面。 then() 方法會傳遞一個回調函數,value 變量負責打印出來自resolve() 方法的結果。
什么是承諾鏈?
Promise 鏈基本上是多個異步函數調用,并以同步方式依次執行它們。 then() 方法。
示例 2
讓我們通過一個例子來詳細理解。
<!DOCTYPE html> <html> <head> <title>Promise chaining in JavaScript </title> </head> <body> <h3> Promise Chaining</h3> <p id ="result"></p> <script> let promise = new Promise(function (resolve, reject) { return resolve(10); }); promise.then(function(firstPromise_val) { alert(firstPromise_val) document.getElementById("result").innerHTML += "First Promise val: "+firstPromise_val+"<br>"; return firstPromise_val+10; }). then(function(secondPromise_val){ alert(secondPromise_val) document.getElementById("result").innerHTML +="Second Promise val: "+ secondPromise_val+"<br>"; return secondPromise_val+10; }). then(function(thirdpromise_val){ alert(thirdpromise_val) document.getElementById("result").innerHTML +="Third Promise val: "+thirdpromise_val+"<br>"; return thirdpromise_val+10; }) </script> </body> </html>
登錄后復制
讓我們了解承諾鏈是如何工作的。
-
第一個最初的承諾得到了兌現。
然后 .then() 方法調用它創建了一個新的 Promise 并得到了解析。
再次調用 .then() 方法,它創建了一個新的 Promise,然后它也得到了解析。
同樣,它正在工作,我們也可以添加另一個承諾處理程序。
所以,基本上 .then() 方法返回一個新的 Promise,并使用 .then() 調用 next 等等。
示例 3
<!DOCTYPE html> <html> <head> <title>Promise chaining in javascript</title> </head> <body> <h3> Promise Chaining</h3> <p id ="result"></p> <script> let promise = new Promise(function (resolve, reject) { return resolve("My"); }). then(function(firstPromise_val) { alert(firstPromise_val) return firstPromise_val+" Name"; }). then(function(secondPromise_val){ alert(secondPromise_val) return secondPromise_val+" is"; }). then(function(thirdpromise_val){ alert(thirdpromise_val) return thirdpromise_val+" Kalyan"; }). then(function(thirdpromise_val){ alert(thirdpromise_val) document.getElementById("result").innerHTML = thirdpromise_val }) </script> </body> </html>
登錄后復制
因此,我們看到了有關其工作原理的從基礎到承諾鏈的深入概念。
以上就是JavaScript 中的 Promise 鏈是什么?的詳細內容,更多請關注www.92cms.cn其它相關文章!