国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Promise構造函數和then方法的執行順序

Cruise_Chan / 2252人閱讀

摘要:的基本用法如果執行失敗,則調用如果執行成功,則調用如果執行成功,則繼續調用方法如果執行失敗,則用捕獲失敗在的內部,執行順序是同步的。

Promise的基本用法
  let promise = new Promise((resolve, reject) => {
        console.log(1)
        // 如果執行失敗,則調用reject()
        // reject("fail")
        
        console.log(2)
        
        // 如果執行成功,則調用resolve()
        resolve("success")
      })

      // 如果執行成功,則繼續調用then方法
      promise.then(res => {
        // console.log(res)
        console.log(3)
      })

      // 如果執行失敗,則用catach捕獲失敗
      promise.catch(err => {
        console.log(err)
        console.log(4)
      })

Promise的內部,執行順序是同步的。其次等內部執行完成后,調用再選擇調用thenorcatch方法。

所以這次輸出的結果:

1
2
3
then的執行順序
   let promise = new Promise((resolve, reject) => {
        console.log(1)
        // 如果執行失敗,則調用reject()
        // reject("fail")
        console.log(2)
        // 如果執行成功,則調用resolve()
        resolve("success")
      })

      // 如果執行成功,則繼續調用then方法
      promise.then(res => {
        console.log(res)
        console.log(3)
      })

      // promise內部是同步的,但是then方法是異步的
      console.log(5)

then方法執行是異步的,不用等到then的方法結果,會直接執行console.log(5)

1
2
5
3
我們可以根據上面的代碼,豐富業務實際情況
      let promise = new Promise((resolve, reject) => {
        console.log(`開始執行`)
        
        // 如果執行成功,則調用resolve()
        resolve("success")
        
        console.log(`執行中ing`)
      }).then(res => {
        console.log(res)
        console.log("執行成功,繼續執行下一步")
        return "第二then方法,開始"
      })

      // 如果執行成功,則繼續調用then方法
      promise.then(res => {
        console.log(res)
      })

      // promise內部是同步的,但是then方法是異步的
      console.log(`我會在then方法前,先執行`)
      
      // 我們可以利用timeout方法在then方法執行完成后,進行執行
      setTimeout(()=>console.log(`then方法執行完成后,開始執行`))
執行結果:
1.開始執行
2.執行中ing
3.我會在then方法前,先執行
4.執行成功,繼續執行下一步
5.第二then方法,開始
6.then方法執行完成后,開始執行
總結

其實比較好理解的方式是:每次當promise執行完成后,then是異步的,所以當執行then后,不會等它的結果,會直接執行下面的代碼,但是setTimeout定時器本身會將執行內容調到任務隊列尾部,所以會等then方法執行完成后才會調用定時器。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/106657.html

相關文章

  • 關于promise小結

    摘要:則是把類似的異步處理對象和處理規則進行規范化,并按照采用統一的接口來編寫,而采取規定方法之外的寫法都會出錯。這個對象有一個方法,指定回調函數,用于在異步操作執行完后執行回調函數處理。到目前為止,已經學習了創建對象和用,方法來注冊回調函數。 Promise 本文從js的異步處理出發,引入Promise的概念,并且介紹Promise對象以及其API方法。 js里的異步處理 可以參考這篇文章...

    Tony_Zby 評論0 收藏0
  • ES6 Promise 全面總結

    摘要:它們其實是在運行完成后,主動向該回調函數中傳入的參數。該方法其實是的別名,用于指定狀態轉為失敗時的回調函數。構造器回調函數參數中的和用于更改當前的狀態,并將其值返回給當前的方法的參數。 ES6 Promise對象 ES6中,新增了Promise對象,它主要用于處理異步回調代碼,讓代碼不至于陷入回調嵌套的死路中。 @-v-@ 1. Promise本質 Promise本質上是一個 函數 ...

    Towers 評論0 收藏0
  • build your promise step by step

    摘要:對象有個屬性,一個為,方法里面注入的回調函數,用來對傳入的上一個傳遞過來的值進行處理另一個為,構造函數內部定義的方法,用來改變狀態以及值。通過再次對構造函數的加強,完成了鏈式調用的功能。 最近看了一篇關于Promise內部實現原理的文章Javascript in wicked detail。作者從簡明的例子入手,一步一步的構建健壯的Promise實現。我就拿作者文中的代碼實例梳理下文章...

    Jason 評論0 收藏0
  • Promise構造函數來解決地獄回調問題

    摘要:簡介是一個構造函數,既然是構造函數,那么,我們就可以得到一個的實例在上,有兩個函數,分別叫做成功之后的回調函數和失敗之后的回調函數在構造函數的屬性上,有一個方法,也就說,只要是構造函數創建的實例,都可以訪問到方法表示一個異步操作每當我們一個 簡介 Promise 是一個 構造函數,既然是構造函數, 那么,我們就可以 new Promise() 得到一個 Promise 的實例; 在...

    darryrzhong 評論0 收藏0
  • 異步發展流程 —— 手寫一個符合 Promise/A+ 規范 Promise

    摘要:構造函數的實現我們在使用的時候其實是使用關鍵字創建了一個的實例,其實是一個類,即構造函數,下面來實現構造函數。 showImg(https://segmentfault.com/img/remote/1460000018998456); 閱讀原文 概述 Promise 是 js 異步編程的一種解決方案,避免了 回調地獄 給編程帶來的麻煩,在 ES6 中成為了標準,這篇文章重點不是敘...

    UnixAgain 評論0 收藏0

發表評論

0條評論

Cruise_Chan

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<