采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师我这里有一个问题向您,有三个部分 #1.设置一个settimeout(fn1,0) #2.执行一万行代码(就很多很多代码让执行的过程就可能要一两秒) #3.在上面代码执行完之后,执行一个Promise.resolve().then(fn2), 首选我想知道在这种情况的执行情况? 然后为什么会造成这种结果,整个过程是怎么样的?
function
fn1 () {
console.log(
'fun1'
);
}
fn2 () {
'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.7k 17
1.9k 11
1.4k 11
1.3k 11
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号