コードを考えてみましょ解決します親コールによって返されるデータに依存します。戻り、相互に依存非同期約束が
私がしたいこと:親コールだけでなく、すべてが完了したときにリゾルバーを返します。
2つの呼び出しが最初の呼び出しに依存しているため、$ q.all()は使用できません。
つまり、myAppControllerは、3つの呼び出しがすべて完了した後にのみロードする必要があります。あなたはあなたの問題を解決するために、連鎖約束と$ Qサービスを使用する必要があり
コードを考えてみましょ解決します親コールによって返されるデータに依存します。戻り、相互に依存非同期約束が
私がしたいこと:親コールだけでなく、すべてが完了したときにリゾルバーを返します。
2つの呼び出しが最初の呼び出しに依存しているため、$ q.all()は使用できません。
つまり、myAppControllerは、3つの呼び出しがすべて完了した後にのみロードする必要があります。あなたはあなたの問題を解決するために、連鎖約束と$ Qサービスを使用する必要があり
は、以下のサンプルコードを使用.Justそれは
myApp.factory('Resolver', ['$http','$q', function ($http,$q) {
return function() {
var deferred = $q.defer();
$http({ url: '/someurl', method: "GET" }).then(function (data) {
return $http({ url: '/someurl', method: "GET" })
}).then(function (data) {
return $http({ url: '/someanotherurl', method: "GET" })
}).then(function (data) {
deferred.resolve(data);
});
return deferred.promise;
}
}]);
を動作するはずですこれは私の作品:
resolve : {
message: function($q, $route, Restangular) {
var msgId = $route.current.params.msgId;
var deferred = $q.defer();
Restangular.one('message', msgId).get().then(function(message) {
Restangular.one('file', message.audioFile.id).get().then(function (blob) {
message.blob = blob;
deferred.resolve(message);
});
});
return deferred.promise;
}
}
こんにちはアジャイ!すぐ返事をありがとう。しかし、チェーンを使用すると、最初の呼び出しで返されたデータを後続の呼び出しに渡すことができると思いますか? – AlwaysALearner
はいすべての関数の中のデータは前の関数から返されたデータです –
連鎖は私の必要性にはうまく適合しませんでした。私はネストされた呼び出しのために行きました。しかし、$ qは本当に私を助けてくれました。ありがとうございました。投票しました! :) – AlwaysALearner