JavaScript - Promise と setTimeout の実行順序に関する混乱
高洛峰
高洛峰 2017-06-26 10:57:47
0
3
1128
リーリー

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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(3)
黄舟

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

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

いいねを押す +0
某草草

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

いいねを押す +0
淡淡烟草味

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!