一、规则
js的执行机制是单线程的。
new Promise((resolve,reject)=>{
})
for (var i = 0; i < 10; i++) {
setTimeout(() => {
console.log(i);
}, 0);
}
//for 循环时同步任务直接去执行了
// 遇到宏任务不执行,放入宏任务队列
// set1,set2,set3...set10
// i<9 i++ i是10
//没有微任务 执行宏任务,宏任务的i是10了所以打印出来的是10
console.log("end", i);
//结论: 先打印 'end 10' 10个10
setInterval(() => {
console.log(1);
}, 1000);宏任务
new Promise((resolve, reject) => {
console.log(2);//同步任务 1
resolve(3);//异步任务1
}).then(res => {
console.log(res);
});
console.log(5); 同步任务2
//2531
先执行所有的同步任务,然后是微任务,最后是宏任务
new Promise(resolve => {
console.log(6); //1
resolve();
}).then(res => {
console.log(7);//第一次存放微任务队列
});
async function first() {
console.log(1);//3
await second();
console.log(2);//第二次存放微任务队列
}
setTimeout(() => {
console.log(4);//宏任务最后执行
});
console.log(5);//2
first();
console.log(8);//同步任务
async function second() {
console.log(3);//4
}
//65138724
总结:new Promise()相当于同步,先执行 同步任务执行完以后