AngularJS, как проверить несколько http-запросов и сделать что-нибудь после того, как все сделано - PullRequest
0 голосов
/ 21 января 2019

Привет, я отправляю HTTP-запрос через цикл, я хочу знать, как я могу что-то сделать после того, как ответ пришел.

Это мой код.

$scope.totalIdSet = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23...ect] total id count will be  more than 200

for (var k = 0; k < $scope.totalIdSet.length; k++) {

MydocumentsServices.downloadDoc($scope.totalIdSet[k], $scope.loggedUserInfo.access_token).then(function (res) {

                }, function () {

                });
            }

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Убедитесь, что вы создали коллекцию массивов обещаний вашего httpRequests.Для того же вы должны вернуть обещание от downloadDoc метода.Поэтому здесь вы можете использовать $q.all, который будет ждать, пока все обещания не будут выполнены.

Сервис

function downloadDoc (totalIdSet, access_token) {
   return $http.post('someurl', totalIdSet, {headers: {Authorization: access_token}})
} 

Контроллер

$scope.totalIdSet = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
var promises = []
for (var k = 0; k < $scope.totalIdSet.length; k++) {
    var promise = MydocumentsServices.downloadDoc($scope.totalIdSet[k], $scope.loggedUserInfo.access_token)
    promises.push(promise)
}
$q.all(promises).then(function(responses) {
  console.log(responses)

}, function() {

});
0 голосов
/ 21 января 2019

Вы можете использовать $ q для запуска асинхронных функций, ожидания их ответов и выполнения того, что вы хотите после этого.

Например,

$q.all(arrayOfHttpFunctions).then(responses => {
    // Do your thing here
})

где arrayOfHttpFunctions - массив объекта запроса $ http.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...