问题如下:
function testSometing() {
console.log('2')
return '5'
}
function testAsync() {
console.log('7')
return Promise.resolve('8')
}
function test() {
console.log('1')
new Promise(resolve => {
resolve(Promise.resolve(testSometing()))
}).then(val => {
const v1 = val
console.log(v1)
new Promise(resolve => {
resolve(Promise.resolve(testAsync()))
}).then(val => {
const v2 = val
console.log(v2)
// console.log(v1, v2, '5,8')
})
})
}
test()
var promise = new Promise(resolve => {
console.log('3')
resolve('6')
}) //3
promise.then(val => console.log(val))
console.log('4')
答案如下:1 2 3 4 6 5 7 8
具体为什么可以看看链接:juejin.cn/post/684490…
总结:
tasks 按序执行,浏览器会在 tasks 之间执行渲染。
microtasks 按序执行,在下面情况时执行:
在每个回调之后,只要没有其它代码正在运行。
在每个 task 的末尾。