setTimeout(function(){ console.log('setTimeout 1') },0); new Promise(resolve => { console.log('script end'); setTimeout(function() { resolve() }, 0) }).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-07-29 21:09:03 浏览: 101
执行结果如下:
```
script end
script start
promise resolve 3
setTimeout 1
promise resolve 1
promise resolve 2
```
解释如下:
1. 首先会输出 `script end`,因为它在 Promise 和 setTimeout 之前被执行。
2. 接着会输出 `script start`,因为它在 Promise 和 setTimeout 之前被执行。
3. 然后会执行 `Promise.resolve().then(function () { console.log('promise resolve 3') })`,输出 `promise resolve 3`。
4. 接下来会执行 `setTimeout(function(){ console.log('setTimeout 1') },0)`,输出 `setTimeout 1`。
5. 然后会执行 `new Promise(resolve => { console.log('script end'); setTimeout(function() { resolve() }, 0) }).then(function () { console.log('promise resolve 1') }).then(function () { console.log('promise resolve 2') })`,其中的 Promise 的回调函数会被放入微任务队列中等待执行。
6. 接着会执行 `promise resolve 1` 和 `promise resolve 2`,因为它们在 Promise 的回调函数之后被放入微任务队列中,会在 Promise 的回调函数执行完毕后立即执行。
阅读全文