日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

在本教程中,我們將討論 JavaScript 中的 Promise 鏈。在轉(zhuǎn)向 Promise 鏈之前,我們先來談?wù)勈裁词?Promise

因此,我們知道 JavaScript 是單線程的,這意味著不允許兩個(gè)函數(shù)同時(shí)運(yùn)行,因?yàn)槲覀冎挥幸粋€(gè)調(diào)用堆棧,如下所示,它有一個(gè)要執(zhí)行的函數(shù)

當(dāng)一個(gè)函數(shù)完成執(zhí)行時(shí),另一個(gè)函數(shù)開始執(zhí)行,因此為了實(shí)現(xiàn)兩個(gè)或多個(gè)函數(shù)同時(shí)運(yùn)行,我們?cè)?JavaScript 示例中使用異步編程 – setTimeout 函數(shù),它接受一個(gè)回調(diào)函數(shù)和指定的時(shí)間,之后它將執(zhí)行執(zhí)行該函數(shù)。

setTimeout(function cT(){
   console.log("I am here after 5 seconds")
}, 5000);

登錄后復(fù)制

因此,我們對(duì)異步操作使用 Promise,它給出異步操作的結(jié)果及其完成或失敗。

就像在現(xiàn)實(shí)生活中一樣,我們以與做出承諾相同的方式承諾完成任何工作,并且它存在于三種狀態(tài)之一。

    待處理 – 這代表初始狀態(tài),表示它既未完成也未拒絕。
    Fulfilled – 這表示我們分配的操作已成功完成。
    拒絕 – 此狀態(tài)表示操作無法執(zhí)行,它被拒絕。

    異步方法返回一個(gè)值,但它不返回最終值,而是返回一個(gè)將來為該函數(shù)提供值的承諾。

    我們?cè)?Promise 語句之后使用 then() 方法執(zhí)行 Promise,如果由于某些錯(cuò)誤而被拒絕,則將使用 catch 塊進(jìn)行處理。

    如何在 JavaScript 中聲明 Promise?

    let promise = new Promise(function (resolve, reject) {
       return resolve("Hello I am resolved");
    });
    

    登錄后復(fù)制

    這里的promise內(nèi)部有一個(gè)函數(shù),稱為回調(diào)函數(shù),它有一個(gè)參數(shù)作為兩個(gè)方法resolve()reject(),正如我們已經(jīng)知道的那樣從上面關(guān)于兩者的解釋來看。

    因此,這里的resolve確保我們給出的函數(shù)的成功完成,而reject將確保它對(duì)給定的可執(zhí)行回調(diào)函數(shù)不成功完成的責(zé)任。

    示例 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>
    

    登錄后復(fù)制

    在上面里面。 then() 方法會(huì)傳遞一個(gè)回調(diào)函數(shù),value 變量負(fù)責(zé)打印出來自resolve() 方法的結(jié)果。

    什么是承諾鏈?

    Promise 鏈基本上是多個(gè)異步函數(shù)調(diào)用,并以同步方式依次執(zhí)行它們。 then() 方法。

    示例 2

    讓我們通過一個(gè)例子來詳細(xì)理解。

    <!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>  
    

    登錄后復(fù)制

    讓我們了解承諾鏈?zhǔn)侨绾喂ぷ鞯摹?/p>

      第一個(gè)最初的承諾得到了兌現(xiàn)。
      然后 .then() 方法調(diào)用它創(chuàng)建了一個(gè)新的 Promise 并得到了解析。
      再次調(diào)用 .then() 方法,它創(chuàng)建了一個(gè)新的 Promise,然后它也得到了解析。
      同樣,它正在工作,我們也可以添加另一個(gè)承諾處理程序。

      所以,基本上 .then() 方法返回一個(gè)新的 Promise,并使用 .then() 調(diào)用 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>
      

      登錄后復(fù)制

      因此,我們看到了有關(guān)其工作原理的從基礎(chǔ)到承諾鏈的深入概念。

      以上就是JavaScript 中的 Promise 鏈?zhǔn)鞘裁矗康脑敿?xì)內(nèi)容,更多請(qǐng)關(guān)注www.92cms.cn其它相關(guān)文章!

分享到:
標(biāo)簽:javascript Promise
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定