検索

ホームページ  >  に質問  >  本文

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

这是为什么呢?

天蓬老师天蓬老师2872日前671

全員に返信(2)返信します

  • PHPz

    PHPz2017-04-17 16:40:12

    setTimeout の動作原理を確認することをお勧めします

    アラート 0 がオンのときに [OK] をクリックしない場合は、5 秒待ってから (スレッドがアイドル状態の場合は 10 秒以上待つ必要がある場合があります)、もう一度クリックすると、順序が正常であることがわかります

    その理由は、プロセスが占有されている場合、プロセスがアイドル状態の場合、今回はスキップされ、次回実行されるためです。

    返事
    0
  • 大家讲道理

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

    リンクを投稿すると、それを読んだ後に啓発されるはずです

    返事
    0
  • キャンセル返事