1. 题目代码
	<script>
		setTimeout(() => {
			console.log(1); //宏任务1
		}, 20);

		console.log(2);

		setTimeout(() => {
			console.log(3); //宏任务2
		}, 10);

		console.log(4);

		console.time('AA');
		for (let i = 0; i < 90000000; i++) {

		}
		console.timeEnd('AA'); //=>AA: 33ms左右 
		console.log(5);

		setTimeout(() => {
			console.log(6);  //宏任务3 53ms 后放入
		}, 20);
		console.log(7);

		setTimeout(() => {
			console.log(8); //宏任务4 43ms放入
		}, 10)


	</script>

问题: 这段代码的输出顺序是什么?为什么?

2.答案

2 4 5 7 3 1 8 6

3.解析: 

同步代码结束时,已经是33MS了, 此时此刻时间已经远超10MS和20MS所以马上会把宏任务2和宏任务1输出   所以是3  1 

又过了一段时间之后,到了43ms的时候输出8,到了53ms的时候输出6,所以最终答案是24573186

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐