2015-08-20 1 views
0

Вот мой пример это работает отлично:Как передавать данные между запросами в угловом ресурсе?

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 id 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.

Кто-нибудь объяснит мне, обновляя мой код, пожалуйста?

ответ

2
first.then(function(data1){ 
    second.then(data2){ 
    third.then(data3){ 

    }); 
    }); 
}); 

первое, второе и третье - ваши обещания. Ошибка может быть получена во второй функции обратного вызова, например.

promise.then(function(successData){ 
    // success here 
}, function(errorData){ 
    // error here. 
}); 
+0

Как получить сообщение об ошибке здесь? 'q.all' не требуется здесь – 3gwebtrain

+0

, так как ваш один запрос зависит от другого, вы не можете использовать' q.all'. вы можете использовать 'q.all' только в том случае, если какой-либо запрос не зависит от результата других запросов. – atinder