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

鍍金池/ 問答/HTML/ 一道ES6的Promise筆試題的疑惑

一道ES6的Promise筆試題的疑惑

console.log(1)
new Promise((resolve, reject) => {
  setTimeout(() => {
    // 標(biāo)記flag
    resolve(false) 
  }, 0)
}).then(() => {
  console.log(2)
}, () => {
  console.log(3)
})
console.log(4)

此時代碼輸出是 1 4 2
標(biāo)記flag處是resolve(false), 不應(yīng)該輸出是 1 4 3 嗎?

回答
編輯回答
替身

resolve(false)
只是把false這個值傳下去了呀,走的還是console.log(2)
如果是reject()那就輸出的是1 4 3

2017年10月10日 20:01
編輯回答
不討喜

then調(diào)用成功回調(diào)還是失敗回調(diào),是看調(diào)用的是resolve,還是reject,而不是看參數(shù)值
不然為什么Promise(function(resolve, reject))要2個參數(shù)

2018年6月11日 08:26
編輯回答
忘了我

為什么是143?

2018年5月23日 00:03
編輯回答
九年囚

題主的疑惑就在第一次 then 為什么進(jìn)了 fullfill 函數(shù)得到了 2 而不是 rejected 得到 3

根據(jù)規(guī)范 resolve(false) 并不會走進(jìn)下一個 thenreject 里面,根據(jù) promise A+ 的規(guī)范,如果最終結(jié)果為 falseresolved 狀態(tài),最終會進(jìn)入下一個 fullfill 函數(shù)

https://promisesaplus.com/#the-promise-resolution-procedure 對應(yīng)規(guī)范里面的 2.3.4 情況

2017年9月8日 06:40