javascript - 关于js,alert()阻塞的问题
天蓬老师
天蓬老师 2017-04-17 16:38:12
0
2
637

我们知道alert()是阻塞式的,但是一下代码执行顺序有问题

执行顺序有问题

(()=>{
    for(let i = 0; i < 5; i++){
        setTimeout(() => alert(i), 1000);
    }
})()

结果: 0,3,2,1,4

执行顺序没问题

(()=>{
    for(let i = 0; i < 5; i++){
        setTimeout(() => console.log(i), 1000);
    }
})()

结果:0,1,2,3,4

这是为什么呢?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

répondre à tous(2)
PHPzhong

建议看一下setTimeout的运行原理

你如果在alert 0 的时候,不去点确定,等5s(线程空闲情况,有可能需要等10s或者更长时间) 之后再去点击,你发现顺序就正常了

原因是,setTimeout在中代码是,如果进程被占用,等到进程空闲了,就会跳过这次,执行下一次了

大家讲道理

贴一个链接,看完以后你应该茅塞顿开

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal