異步改同步async await用法


例如有下面3個函數

    function a() {
      b();
      c();
    }

    function b() {
      setTimeout(() => {
        console.log('b')
      }, 2*1000);
    }

    function c() {
      setTimeout(() => {
        console.log('c')
      }, 1*1000);
    }

a() //輸出結果分布是:c,b

  如果我們相要讓他們按順序輸出b,c就不是很容易的了,因為settimeout函數是一個異步執行的事件,所以es6提供了一個async await配合promise方法來解決這個問題,

改寫成下面代碼

async function a() {
      await b()
      await c()
    }

    function b() {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          console.log('b')
          resolve(1)
        }, 2 * 1000);
      })
    }

    function c() {
      return new Promise((resolve, reject) => {
          console.log('c')
          resolve(2)
      })
    }

    a()//輸出:b,c

  es6提供的async await 方法十分強大,但要配合promise來使用才能展現他的真正功能,具體的async await和promise用法可以百度了解一下

      參考鏈接:https://www.jianshu.com/p/73b070eebf50

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM