4 回答
TA贡献2012条经验 获得超12个赞
同步状态下顺序执行
Promise 新建后立即执行, then 在当前脚本所有同步任务执行完才会执行, then方法返回的是一个新的Promise实例
Promise.resolve方法允许调用时不带参数,直接返回一个resolved状态的 Promise 对象。
事件队列里面 Promise 比 setTimeout 早执行
所以应该是这样:
=> 'begin'
=> 定义了一个异步setTimeout 1,先放到事件队列(setTimeout 1),继续同步执行
=> 'end'
=> 同步代码执行完成,开始执行异步 setTimeout 1 代码
=> 'setTimeout 1'
=> 定义了异步Promise.resolve,返回一个 Promise1 ,先放到事件队列(Promise1),继续同步执行
=> 新建Promise 立即执行
=> 'a'
=> 同步代码执行完毕,返回新的Promise , 先放到事件队列(Promise1,Promise)
=> 开始执行 Promise1
=> 'promise 1'
=> 继续同步执行,定义了一个异步setTimeout 2, 放到事件队列(Promise,setTimeout 2)
=> Promise1同步代码执行完毕,返回一个 Promise2, 放到事件队列(Promise,setTimeout 2,Promise2)
=> 同步代码执行完毕,执行 Promise代码
=> 'b'
=> Promise 完毕,队列中还有 Promise2 和 setTimeout 2
=> 先 Promise2
=> 'promise 2'
=> 继续 setTimeout 2
=> 'setTimeout2'
添加回答
举报
