ホームページ > 記事 > ウェブフロントエンド > Promise コンストラクターのエグゼキューター関数は同期ですか、それとも非同期ですか?
Promise コンストラクターは、Promise の履行ロジックを定義するエグゼキューター関数を受け入れます。 1 つの重要な質問が生じます: このエグゼキューター関数は非同期で実行されますか? それとも同期で実行されますか?
動作は Promise 自体の実装によって異なります。ただし、Promise の ES6 標準では、Promise の履行は常に 非同期であると明示的に規定されています。
仕様を参照すると、executor 関数 (この場合は y 関数) ) は実際に同期的に実行されます (仕様のステップ 10 を参照)。ただし、promise.then(...) など、promise での .then() への後続の呼び出しは、常に非同期で実行されます (「PerformPromiseThen」アルゴリズムのステップ 8 を参照)。
.then() 呼び出しのこの非同期の性質には、いくつかの影響があります。
次のコード スニペットを考えてみましょう。
<code class="javascript">function y(resolve, reject) { console.log("Result"); resolve(); } var promise = new Promise(y); promise.then(() => { console.log("Then handler executed after the synchronous execution of y"); });</code>
この例では、 y 関数が同期的に実行されます。ただし、イベント ループが終了すると、.then() ハンドラーは非同期で実行されます。このコードの出力は次のようになります:
Result Then handler executed after the synchronous execution of y
以上がPromise コンストラクターのエグゼキューター関数は同期ですか、それとも非同期ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。