采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师我这里有一个问题向您,有三个部分 #1.设置一个settimeout(fn1,0) #2.执行一万行代码(就很多很多代码让执行的过程就可能要一两秒) #3.在上面代码执行完之后,执行一个Promise.resolve().then(fn2), 首选我想知道在这种情况的执行情况? 然后为什么会造成这种结果,整个过程是怎么样的?
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
同步和异步的过程是不会互相影响的。同步的代码执行了很久可能10秒,你做了个定时器是1秒,那1秒后会把你异步的回调放到同步代码后面,你可以仔细去看老师的那个图。10000行代码放到call stack中,1秒后把异步回调放到callback queue中等待event loop去执行它。当call stack中所有的代码执行完后,触发了event loop,把异步回调推到call stack,执行。
fn1 是啥?fn2 是啥?把示例代码写出来吧。
一万行代码可以省略,注视一下
function fn1 () { console.log('fun1'); } function fn2 () { console.log('fun2'); } setTimeout(fn1,0) for(var i = 0; i< 10000000000; i++) { } Promise.resolve().then(fn2) 他说的可能是类似这个情况的代码
登录后可查看更多问答,登录/注册
针对时下面试高频考点,帮助新人js面试快速通关
1.6k 17
1.8k 11
1.3k 11