搜尋

首頁  >  問答  >  主體

javascript - 关于js,alert()阻塞的问题

我们知道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

这是为什么呢?

天蓬老师天蓬老师2930 天前700

全部回覆(2)我來回復

  • PHPz

    PHPz2017-04-17 16:40:12

    建議看一下setTimeout的運作原理

    你如果在alert 0 的時候,不去點確定,等5s(線程空閒情況,有可能需要等10s或更長時間) 之後再去點擊,你發現順序就正常了

    原因是,setTimeout在中程式碼是,如果行程被佔用,等到行程空閒了,就會跳過這次,執行下一次了

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-17 16:40:12

    貼一個鏈接,看完以後你應該茅塞頓開

    回覆
    0
  • 取消回覆