私はプロミスに約resolve
を混同しています。異なる解決が呼び出されたとき約束を約束して実行する
resolve
は、innerResolve
の前に呼び出されますが、クロムコンソールでは[Promise then execute]の前に '内部のPromise then execute'が記録されるのはなぜですか。
私はそれがあるかもしれないと思う:
約束の状態がちょうど成就に状態を設定し、then
メソッドが呼び出されたときに、ジョブがjobQueueにキューイングされますresolve
を呼び出して、保留された場合。 innerPromise.then
が最初に呼び出されるため、ジョブは最初にキューに入れられます。
この質問には規範的な説明がありますか?ここで
は私のコードです:これが完了すると、彼らは
単一のスタックフレームにresolve()
console.log("resove is called")
innerResolve()
console.log("innerResolve is called")
あるので、約束が解決されている場合
console.log("main start")
new Promise(resolve =>{
new Promise(innerResolve =>{
resolve()
console.log("resove is called")
innerResolve()
console.log("innerResolve is called")
}).then(() => {
console.log('inner Promise then execute')
})
}).then(() => {
console.log('Promise then execute');
})
console.log("main end")
を両方お使いの約束が、すぐにそれらが作成されるように解決されています。その時点で、はい、 '.then()'が呼び出される順番です。関連するスペックの概要については、https://stackoverflow.com/questions/46408228/es6-promise-execution-order-for-returned-values/46409443#46409443を参照してください。 – Ryan