[解決済み] すべての約束が解決するのを待つ
2022-10-19 08:36:23
質問
未知の長さの複数のプロミスチェーンを持っている状況があります。私はすべてのチェーンが処理されたときに実行されるアクションが欲しいです。それは可能ですか?以下はその例です。
app.controller('MainCtrl', function($scope, $q, $timeout) {
var one = $q.defer();
var two = $q.defer();
var three = $q.defer();
var all = $q.all([one.promise, two.promise, three.promise]);
all.then(allSuccess);
function success(data) {
console.log(data);
return data + "Chained";
}
function allSuccess(){
console.log("ALL PROMISES RESOLVED")
}
one.promise.then(success).then(success);
two.promise.then(success);
three.promise.then(success).then(success).then(success);
$timeout(function () {
one.resolve("one done");
}, Math.random() * 1000);
$timeout(function () {
two.resolve("two done");
}, Math.random() * 1000);
$timeout(function () {
three.resolve("three done");
}, Math.random() * 1000);
});
この例では
$q.all()
を設定します。これは、あるランダムな時間に解決される約束1、2、3に対してです。そして、1 と 3 の端に約束事を追加します。私は
all
が解決されるようにしたいのです。このコードを実行したときの出力は以下のとおりです。
one done
one doneChained
two done
three done
ALL PROMISES RESOLVED
three doneChained
three doneChainedChained
チェーンが解消されるのを待つ方法はありますか?
解決方法は?
すべての連鎖が解消されたときに、オールも解消してほしい。
もちろん、それなら各チェーンのプロミスを
all()
は、最初の約束の代わりに
$q.all([one.promise, two.promise, three.promise]).then(function() {
console.log("ALL INITIAL PROMISES RESOLVED");
});
var onechain = one.promise.then(success).then(success),
twochain = two.promise.then(success),
threechain = three.promise.then(success).then(success).then(success);
$q.all([onechain, twochain, threechain]).then(function() {
console.log("ALL PROMISES RESOLVED");
});
関連
-
[解決済み】npm UNMET PEER DEPENDENCYの警告を修正するにはどうすればいいですか?
-
[解決済み] AngularJSで$httpリクエスト中にスピナーGIFを表示する?
-
[解決済み] AngularJSの「href」と「ng-href」の違いについて
-
[解決済み] createspyとcreatespyobjの違いは何ですか?
-
[解決済み] AngularJSで画像を表示する
-
[解決済み] AngularJSで$scope.$watchと$scope.$applyを使用するにはどうすればよいですか?
-
[解決済み] 既存のコールバックAPIをプロミスに変換するにはどうすればよいですか?
-
[解決済み】PromiseとObservablesの違いは何ですか?
-
[解決済み】一部の約束が拒否されても、すべての約束が完了するまで待つ
-
[解決済み】JavaScriptのプロミス - reject vs. throw
最新
-
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 ローカルデータストレージ LocalStorage
-
[解決済み] X-Frame-Options'を'SAMEORIGIN'に設定しているため、フレーム内での表示を拒否された。
-
[解決済み] select 要素のデフォルト値を設定するための ng-option の使用方法
-
[解決済み] AngularJSのグローバル変数
-
[解決済み] Angular JS $locationChangeStart 次の url ルートオブジェクトを取得する
-
[解決済み] ng-pattern` - 数字だけをチェックする方法は?
-
[解決済み] AngularJS 。scope.apply()呼び出し時の$digest already in progressエラーを防ぐ。
-
angularjs が src で指定されたコンテンツを iframe 内で正しく表示しない
-
[解決済み] Ui-srefがクリッカブルリンクを生成しない/動作しない
-
[解決済み] AngularJSを使用して、ブラウザのコンソールで$scope変数にアクセスするにはどうすればよいですか?