Promise的值穿透特性

xxz15152發表於2020-12-08

今天看promise相關知識,發現值穿透這個特性之前並不太瞭解,特此記錄一下

程式碼:

Promise.resolve(1)
      .then(2) // 注意這裡
      .then(Promise.resolve(3))
      .then(console.log)
此程式碼輸出結果是1

再看下面程式碼:

Promise.resolve('foo')
    .then(Promise.resolve('bar'))
    .then(function(result){
      console.log(result)
    })
此程式碼輸出'foo'

繼續看下面程式碼

Promise.resolve(1)
  .then(function(){return 2})
  .then(Promise.resolve(3))
  .then(console.log)

輸出2,沒問題

最後一個例子

Promise.resolve(1)
  .then(function(){return 2})
  .then(function(){return Promise.resolve(3)})
  .then(console.log)

輸出3

結論:Promise方法鏈通過return傳值,沒有return就只是相互獨立的任務而已

相關文章