Вот мой пример: это нормально работает:
var first = $http.get("/app/data/first.json"),
second = $http.get("/app/data/second.json"),
third = $http.get("/app/data/third.json");
$q.all([first, second, third]).then(function(result) {
var tmp = [];
angular.forEach(result, function(response) {
tmp.push(response.data);
});
return tmp;
}).then(function(tmpResult) {
$scope.combinedResult = tmpResult.join(", ");
});
Здесь first, second and third
все работы в одиночку не зависели. В случае, например, "для второго requires some
идентификатор from
первого and
третьего, requires some
данные from
второго ... then how to initiate the
запрос" зависит от другого?
var first = $http.get("/app/data/first.json"), //fetching id
second = $http.get("/app/data/second.json"), //needs some id from first
third = $http.get("/app/data/third.json"); //needs some data from second
Как это должно быть обработано. также запрос будет из серии добавления запроса или серии добавления в $q.all
.
кто-нибудь объяснит мне, обновляя мой код, пожалуйста?
first.then(function(data1){
second.then(data2){
third.then(data3){
});
});
});
первое, второе и третье - ваши обещания. Ошибка может быть получена во второй функции обратного вызова, например.
promise.then(function(successData){
// success here
}, function(errorData){
// error here.
});
q.all
здесь не требуетсяq.all
. Вы можете использоватьq.all
только если какой-либо запрос не зависит от вывода других запросов.