在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 關(guān)于promise的一道面試題

關(guān)于promise的一道面試題

Promise.resolve(1)
  .then(2)
  .then(Promise.resolve(3))
  .then(console.log)

運行結(jié)果:

   1

解釋:.then 或者 .catch 的參數(shù)期望是函數(shù),傳入非函數(shù)則會發(fā)生值穿透。

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

結(jié)果為2

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

結(jié)果為3

不是太明白,then里面必須通過函數(shù)來返回的一個值才能被包裝為Promise嗎?

回答
編輯回答
情殺

Promise.resolve(1)沒什么實用價值。
Promise主要是解決異步callback寫法不合適的問題,then里面的函數(shù)就是callback的函數(shù),比如ajax的回掉函數(shù)。

2018年4月9日 05:28
編輯回答
舊顏

Promise在ES6之前其實是個非標準協(xié)議,據(jù)說最早1976年就有人提出,強調(diào)的是Future的狀態(tài)。在將來如果滿足了特定的條件做什么動作(onFulfilled),不滿足做什么動作(onRejected)。promise.then(onFulfilled, onRejected)。這樣可能稍微好理解一點?;氐侥愕膯栴}

then里面必須通過函數(shù)來返回的一個值才能被包裝為Promise嗎?

你這個問題問的方式就不太對,then只是約定接受一個function作為它的參數(shù),這個function返回什么,它并不關(guān)心,你可以不返回,只要promise滿足你的特點條件,就會回調(diào)你的then。當然,你的then又約定了下一個then的滿足條件。只要過程不出錯,return之后或者程序執(zhí)行完就會回調(diào)下一個then的onFulfilled,return的結(jié)果作為下一個onFulfilled的參數(shù)。
好拗口。建議你看看Promise的原理。

2017年3月17日 15:46
編輯回答
浪蕩不羈

Promise方法鏈通過return傳值,沒有return就只是相互獨立的任務(wù)而已

2017年5月11日 21:24
編輯回答
涼薄

參考MDN這段話:https://developer.mozilla.org...

  • 如果then中的回調(diào)函數(shù)返回一個值,那么then返回的Promise將會成為接受狀態(tài),并且將返回的值作為接受狀態(tài)的回調(diào)函數(shù)的參數(shù)值。

  • 如果then中的回調(diào)函數(shù)拋出一個錯誤,那么then返回的Promise將會成為拒絕狀態(tài),并且將拋出的錯誤作為拒絕狀態(tài)的回調(diào)函數(shù)的參數(shù)值。

  • 如果then中的回調(diào)函數(shù)返回一個已經(jīng)是接受狀態(tài)的Promise,那么then返回的Promise也會成為接受狀態(tài),并且將那個Promise的接受狀態(tài)的回調(diào)函數(shù)的參數(shù)值作為該被返回的Promise的接受狀態(tài)回調(diào)函數(shù)的參數(shù)值。

  • 如果then中的回調(diào)函數(shù)返回一個已經(jīng)是拒絕狀態(tài)的Promise,那么then返回的Promise也會成為拒絕狀態(tài),并且將那個Promise的拒絕狀態(tài)的回調(diào)函數(shù)的參數(shù)值作為該被返回的Promise的拒絕狀態(tài)回調(diào)函數(shù)的參數(shù)值。

  • 如果then中的回調(diào)函數(shù)返回一個未定狀態(tài)(pending)的Promise,那么then返回Promise的狀態(tài)也是未定的,并且它的終態(tài)與那個Promise的終態(tài)相同;同時,它變?yōu)榻K態(tài)時調(diào)用的回調(diào)函數(shù)參數(shù)與那個Promise變?yōu)榻K態(tài)時的回調(diào)函數(shù)的參數(shù)是相同的

2018年3月23日 14:55