[解決済み] なぜjavascriptのES6 Promisesはresolve後も実行を継続するのですか?
2022-07-27 21:08:28
質問
プロミスはresolve()やreject()ができるものだと理解していますが、resolveやrejectが呼ばれた後もプロミス内のコードが実行され続けると知って驚いています。
resolveやrejectはexitやreturnの非同期版で、直後の関数の実行をすべて停止させるものだと考えていました。
以下の例で、resolveの呼び出し後にconsole.logが表示されることがあるのはなぜか、その背後にある考えを説明できる人はいますか?
var call = function() {
return new Promise(function(resolve, reject) {
resolve();
console.log("Doing more stuff, should not be visible after a resolve!");
});
};
call().then(function() {
console.log("resolved");
});
どのように解決するのですか?
JavaScriptには
"完了まで実行"
. エラーが発生しない限り、関数は
return
ステートメントかその終了に達するまで実行されます。関数の外側の他のコードはそれを邪魔することはできません(繰り返しますが、エラーがスローされない限り)。
もしあなたが
resolve()
でイニシャライザー関数を終了させたい場合は、その前に
return
:
return new Promise(function(resolve, reject) {
return resolve();
console.log("Not doing more stuff after a return statement");
});
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み] JavascriptのPromiseを関数スコープ外で解決する
-
[解決済み] 早期解決・早期却下の後、戻る必要はありますか?
-
[解決済み】JavaScriptのプロミス - reject vs. throw
-
[解決済み] 文字列がすべて同じ部分文字列で構成されているかどうかを調べるにはどうすればよいですか?
-
[解決済み] ECMAScriptとは?
-
[解決済み] レンダリング時にonClickが呼ばれるのはなぜですか?- React.js
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] 文字列が空白であるかどうかをチェックする
-
[解決済み] CORS OriginヘッダーとCSRFトークンによるCSRF保護
-
[解決済み] moment.jsでミュータビリティを回避するには?
-
[解決済み] AngularJS - ngRepeatフィルタリングされた結果の参照を取得する方法
-
[解決済み] jqueryはjavascriptのライブラリなのかフレームワークなのか?[クローズド]
-
[解決済み] BlobからArrayBufferへ移行する方法
-
[解決済み] HTML要素にスクロールバーがあるかどうかをチェックする
-
[解決済み] JavaScript で css プロパティを使用して HTML 要素の背景色を設定する方法
-
[解決済み] Chrome拡張機能:popup.htmlを強制終了させる