javascript同步异步面试题
同步代码结束时,已经是33MS了, 此时此刻时间已经远超10MS和20MS所以马上会把宏任务2和宏任务1输出所以是31。又过了一段时间之后,到了43ms的时候输出8,到了53ms的时候输出6,所以最终答案是24573186。问题: 这段代码的输出顺序是什么?
·
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
更多推荐

所有评论(0)