對Promise的簡單理解

什麼是promise:異步編程代碼的一種方式
 let p = new Promise((resolve, reject) => {
  // 作一些事情
  // 而後在某些條件下resolve,或者reject
  if (/* 條件隨便寫^_^ */) {
    resolve()
  } else {
    reject()
  }
})

p.then(() => {
    // 若是p的狀態被resolve了,就進入這裏
}, () => {
    // 若是p的狀態被reject
})

調用.then能夠爲實例p註冊兩種狀態回調函數
當實例p的狀態爲fulfilled,會觸發第一個函數執行
當實例p的狀態爲rejected,則觸發第二個函數執行
promise的做用:
如今假設有多個異步任務,且任務間有依賴關係(一個任務須要拿到另外一個任務成功後的結果才能開始執行)的時候,回調的方式寫出來的代碼就會像下面這樣:
 getData1(data1 => {
  getData2(data1, data2 => {
    getData3(data2, data3 => {
      getData4(data3, data4 => {
        getData5(data4, data5 => {
          // 終於取到data5了
        })
      })
    })
  })
})
promise改寫一下:
getData1()
    .then(getData2)
    .then(getData3)
    .then(getData4)
    .then(getData5)
    .then(data => {
      // 取到最終data了
 })
 
3種狀態:
promise實例有三種狀態:
pending(待定)
fulfilled(已執行)
rejected(已拒絕)

promise的內容分爲構造函數、實例方法和靜態方法
1個構造函數: new Promise
2個實例方法:.then 和 .catch
4個靜態方法:Promise.all、Promise.race、Promise.resolve和Promise.reject
複製代碼
相關文章
相關標籤/搜索