次のコードの実行方法を理解できません。なぜ "1"は "b"の後に "h"は "3"の後にあるのですか?順序はa、b、1、2、h、3でなければならない?いくつかの記事は、 "イベントループキュー"と "ジョブキュー"の違いは、次の出力につながると述べています。しかしどうですか?私はECMAScript 2015 - 8.4 Jobs and Job Queuesの仕様を読んで、Promise'jobの仕組みを知りたいが、それはもっと混乱させる。誰か助けてくれますか?ありがとうございました!"イベントループキュー"と "ジョブキュー"の違いは何ですか?
var promise = new Promise(function(resolve, reject) {resolve(1)});
promise.then(function(resolve) {console.log(1)});
console.log('a');
promise.then(function(resolve) {console.log(2);});
setTimeout(function() {console.log('h')}, 0);
promise.then(function(resolve) {console.log(3)});
console.log('b');
// a
// b
// 1
// 2
// 3
// h
私は約束が非同期である知っているが、setTimeoutメソッドのコールバック(..)非同期操作プロミスの非同期操作の後に常にあります。どうして?
約束の非同期されている - 、.thenが非同期的に呼び出されるようにもインライン同期探しコード - それは約束が –