Promise

作者: 曹锦花 | 来源:发表于2019-09-25 14:08 被阅读0次
new Promise((resolve,reject)=>{
  setTimeout(()=>{
    resolve({test:1})
    resolve({test:2})
    reject({test:2})
  },1000)
}).then((data)=>{
  console.log('result1',data)
},(data1)=>{
  console.log('result2',data1)
}).then((data)=>{
  console.log('result3',data)
})

打印结果
result1 {text:1}
result3 undefined

首先里面没有产生宏任务,产生了1个 setTimeout 的微任务,1秒后顺序执行
resolve({test:1})
resolve({test:2})
reject({test:2})
在执行完第一行后,promise状态变为 fulfilled,由于promise状态一经改变,就被确定了,所以第二行和第三行执行的就是没有任何效果的
然后就进了第一个 then,因为是 fulfilled ,所以调用第一个参数,就是成功的回调函数
然后回调函数里打印了一句话,没有任何返回值,所以默认返回 undefined
then里面返回的新的promise的状态就是fulfilled,内容是 resolve(undefined)
所以,第二个then里面就是 result3 undefined

then 就是根据promise状态判断调用哪个参数执行啊
.then()之后为什么还能.then?
因为 then 返回的也是一个 promise
会包装成 resolve(返回值)
没有返回值就是返回 resolve(undefined)

相关文章

网友评论

      本文标题:Promise

      本文链接:https://www.haomeiwen.com/subject/msymyctx.html