关于event loop的机制

来源:8-5 event loop 的执行过程

N1ghtV0yager

2021-02-28

老师我这里有一个问题向您,有三个部分
#1.设置一个settimeout(fn1,0)
#2.执行一万行代码(就很多很多代码让执行的过程就可能要一两秒)
#3.在上面代码执行完之后,执行一个Promise.resolve().then(fn2),
首选我想知道在这种情况的执行情况?
然后为什么会造成这种结果,整个过程是怎么样的?

写回答

3回答

fstgshow

2021-03-21

function fn1 () {
    console.log('fun1');
}
function fn2 () {
    console.log('fun2');
}
setTimeout(fn1,0)
for(var i = 0; i< 10000000000; i++) {
 // 我试了试这个执行大约5s,反正远远大于2s
}
Promise.resolve().then(fn2)

结果就是先等待循环完成,再去打印f2,然后打印f1;
setTimeout 在“等待区”等待同步任务完成,then()是微任务优先执行,然后在执行setTimeout

0
0

慕粉3871079

2021-03-11

同步和异步的过程是不会互相影响的。同步的代码执行了很久可能10秒,你做了个定时器是1秒,那1秒后会把你异步的回调放到同步代码后面,你可以仔细去看老师的那个图。10000行代码放到call stack中,1秒后把异步回调放到callback queue中等待event loop去执行它。当call stack中所有的代码执行完后,触发了event loop,把异步回调推到call stack,执行。

0
0

双越

2021-03-01

fn1 是啥?fn2 是啥?把示例代码写出来吧。

一万行代码可以省略,注视一下

0
1
fstgshow
function fn1 () { console.log('fun1'); } function fn2 () { console.log('fun2'); } setTimeout(fn1,0) for(var i = 0; i< 10000000000; i++) { } Promise.resolve().then(fn2) 他说的可能是类似这个情况的代码
2021-03-21
共1条回复

一天时间高效准备前端技术一面 匹配大厂面试要求

针对时下面试高频考点,帮助新人js面试快速通关

4694 学习 · 1681 问题

查看课程