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

JavaScript - Promise と setTimeout の実行順序に関する混乱

リーリー

上記のコードでは、結果が 1,2 ではなく 2,1 になるのはなぜですか?
setTimeout が最初にタスク キューに追加されるのではありませんか?

高洛峰高洛峰2673日前1134

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

  • 黄舟

    黄舟2017-06-26 10:59:47

    具体的に言えば、setTimeout有一个4ms的最短时间,也就是说不管你设定多少,反正最少都要间隔4ms才运行里面的回调(当然,浏览器有没有遵守这个规范是另外一回事儿)。而Promiseの非同期にはこの問題はありません。

    具体的な実装に関しては、2 つの非同期キューは異なります。Promise が配置されている非同期キューの方が優先されます。
    詳細については、次の記事をご覧ください: Promise の JavaScript でのイベント ループ、タスク、マイクロタスクの確認

    返事
    0
  • 某草草

    某草草2017-06-26 10:59:47

    Promise的任务会在当前事件循环末尾中执行,而setTimeoutのタスクは次のイベントループで実行されます

    返事
    0
  • 淡淡烟草味

    淡淡烟草味2017-06-26 10:59:47

    読んでみると、「あなたの知らない JS (パート 2)」のセクション 1.5 あたりの内容が理解できると思います。

    返事
    0
  • キャンセル返事