[解決済み] 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
または、エグゼキュータが同期の副作用を持っている場合。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み】JavaScript版sleep()とは?)
-
[解決済み] .then()チェーンで以前のプロミス結果にアクセスするにはどうすればよいですか?
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] React js 親コンポーネントから子コンポーネントの状態を変更する
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] <Enter>でjQuery UIダイアログを送信する
-
[解決済み] jqueryでdivの要素がオーバーフローしていないかチェックする
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] モバイルWeb HTML5フレームワークの選び方【終了しました
-
[解決済み] 文字列が空白であるかどうかをチェックする
-
[解決済み] react-routerのハッシュフラグメントからクエリパラメータを取得する
-
[解決済み] TypeScriptプロジェクトで既存のC#クラス定義を再利用する方法
-
[解決済み] イテレータでmap()を使用する
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] Javascript の parseInt() で先頭のゼロを削除する。