宏任务 微任务 执行顺序 练习题
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
232323
<script>
/**
* 进程 & 线程
* 一个进程中可能包含多个线程
*
* 浏览器的多线程的
* HTTP 网络线程
*
* 异步编程的代码
*
* [宏任务]
* + 定时器,事件绑定,ajax/fetch
*
* [微任务]
*
*/
// setTimeout(()=>{
// console.log(1);
// },20)
// console.log(2);
// setTimeout(()=>{
// console.log(3);
// },10)
// console.log(4);
// console.time('AA');
// for(let i=0;i< 900000000;i++){
// // do ---
// }
// console.timeEnd('AA'); // AA: 0.0029296875 ms
// console.log(5);
// setTimeout(()=>{
// console.log(6);
// },8)
// console.log(7);
// setTimeout(()=>{
// console.log(8);
// },15)
// console.log(9);
// setTimeout(()=>{
// console.log(1);
// },0)
// console.log(2);
// // while(1){
// // }
// console.log(3);
// setTimeout(()=>{
// console.log(4);
// },10)
// console.log(5);
// async function async1(){
// console.log('async1 start');
// await async2();
// console.log('async1 end');
// }
// async function async2(){
// console.log('async2');
// }
// console.log('script start');
// setTimeout(()=>{
// console.log('setTimeout');
// },0)
// async1();
// new Promise(function(resolve){
// console.log('Promise1');
// resolve();
// }).then(function(){
// console.log('Promise2');
// })
// console.log('script end');
// 第 1 题
// let body = document.body;
// body.addEventListener('click',function(){
// Promise.resolve().then(()=>{
// console.log(1);
// })
// console.log(2);
// })
// body.addEventListener('click',function(){
// Promise.resolve().then(()=>{
// console.log(3);
// })
// console.log(4);
// })
// 2 1 4 3
// 第2题
// console.log('start');
// let intervalId;
// Promise.resolve().then(()=>{
// console.log('p1');
// }).then(()=>{
// console.log('p2');
// })
// setTimeout(()=>{
// Promise.resolve().then(()=>{
// console.log('p3');
// }).then(()=>{
// console.log('p4');
// })
// // intervalId = setInterval(() => {
// // console.log('interval');
// // }, 3000);
// console.log('timeout1');
// },0)
// start p1 p2 timeout1 p3 p4 interval
// 第3题
// setTimeout(()=>{
// console.log('a');
// })
// Promise.resolve().then(()=>{
// console.log('b');
// }).then(()=>{
// return Promise.resolve('c').then(data=>{
// setTimeout(()=>{
// console.log('d');
// })
// console.log('f');
// return data;
// })
// }).then(data=>{
// console.log(data);
// })
// b f c a d
// 第4题
function func1(){
console.log('func1 start');
return new Promise(resolve=>{
resolve('ok');
});
}
function func2(){
console.log('func2 start');
return new Promise(resolve=>{
setTimeout(()=>{
resolve('ok');
},10)
});
}
console.log(1);
setTimeout(async()=>{
console.log(2);
await func1();
console.log(3);
},20);
for(let i=0;i<90000000;i++){}
console.log(4);
func1().then(result=>{
console.log(5);
})
func2().then(result=>{
console.log(6);
})
setTimeout(()=>{
console.log(7);
},0)
console.log(8);
// 1 4 func1 start func2 start start 8 5 2 func1 start 3 7 6
</script>
</body>
</html>
我是Eric,手机号是13522679763

浙公网安备 33010602011771号