1. ホーム
  2. javascript

[解決済み] Promiseのボディはいつ実行されるのですか?

2023-06-27 10:11:33

質問

次のようなものがあるとします。 Promise :

function doSomethingAsynchronous() {
  return new Promise((resolve) => {
    const result = doSomeWork();

    setTimeout(() => {
      resolve(result);
   }), 100);
  });
}

どの時点の doSomeWork() はどの時点で呼ばれるのでしょうか?の直後でしょうか、それとも Promise が構築された直後ですか?もしそうでないなら、何か明示的に追加しなければならないことがありますか? Promise が実行されるようにするために、何か追加で明示的に行う必要がありますか?

どのように解決するのですか?

すぐに、はい、指定で。

から MDN :

<ブロッククオート

Promiseの実装では、resolveとrejectの関数を渡してすぐに実行されます(Promiseのコンストラクタが生成したオブジェクトを返す前に実行関数が呼ばれる)。

ECMAScriptの仕様書ではこうなっています(もちろん読みにくいですが・・・)。 http://www.ecma-international.org/ecma-262/6.0/#sec-promise-executor

この保証は、例えば、いくつかの約束を用意し、それを all または race または、エグゼキュータが同期の副作用を持っている場合。