setTimeout(function(){ console.log('setTimeout 1') },0); new Promise(resolve => { console.log('script end'); resolve() }).then(function () { console.log('promise resolve 1') }).then(function () { console.log('promise resolve 2') }); Promise.resolve().then(function () { console.log('promise resolve 3') }); console.log('script start')
时间: 2023-08-02 21:10:29 浏览: 164
js函数使用技巧之 setTimeout(function(){},0)
这段代码的执行顺序如下:
1. console.log('script start') 首先被执行,打印出 "script start"。
2. new Promise() 中的代码被执行,打印出 "script end"。
3. Promise.resolve().then() 中的代码被执行,打印出 "promise resolve 3"。
4. setTimeout() 中的代码被放入宏任务队列中,等待执行。
5. Promise.then() 中的第一个回调函数被放入微任务队列中,等待执行。
6. Promise.then() 中的第二个回调函数被放入微任务队列中,等待执行。
7. JavaScript 主线程空闲时,开始执行微任务队列中的回调函数。
8. 执行 Promise.then() 中的第一个回调函数,打印出 "promise resolve 1"。
9. 执行 Promise.then() 中的第二个回调函数,打印出 "promise resolve 2"。
10. JavaScript 主线程空闲时,开始执行宏任务队列中的任务。
11. 执行 setTimeout() 中的回调函数,打印出 "setTimeout 1"。
因此,最终输出的结果是:
```
script start
script end
promise resolve 3
promise resolve 1
promise resolve 2
setTimeout 1
```
阅读全文