Ожидание выполнения нескольких $ ресурсов

Я предлагаю использовать Pattern и Matcher, который почти наверняка достигнет того, чего вы хотите. Ваше регулярное выражение должно быть несколько сложнее, чем то, что вы используете в String.split.

1
задан thanos keske 23 January 2019 в 11:13
поделиться

2 ответа

Все довольно просто, вам не нужно $ q.defer:

var promise1 = smth1.then(...);
var promise2 = smth2.then(...);

return $q.all([promise1, promise2]).then(function (promisesResultArray) {
   // promisesResultArray[0] is result of first promise
   // promisesResultArray[1] is result of second promise
   return whateverYouwant; //or simply promisesResultArray
})

П.С .: Чтобы добавить сюда - если одно из обещаний не выполняется, $ q.all не выполняется и не ждет других обещаний. (И нет ничего подобного $ q.allSettled)

0
ответ дан Petr Averyanov 23 January 2019 в 11:13
поделиться

Используйте $q.all(), а затем разрешите обещание.

$q.all() позволяет вам ожидать массив обещаний, $ q.all () объединит их в одно обещание.

Ваш код обновлен:

$scope.getUser = function (applicantUser) {
  get(applicantUser).then(function (result) {
      $scope.requests = result;
  }, function (error){
      console.log(error);
  });
};

var get = function (applicantUser) {
  var defer = $q.defer();
  var temp = [];

  var promise1 = GetListOfRequestsPerUser.get({userId: '', newUserSerialNumber: applicantUser}).$promise;

  var promise2 = GetRequestsById.get({requestId: applicantUser}).$promise;

  $q.all([promise1, promise2]).then(function(result) {

    // GetListOfRequestsPerUser
    result[0].data.forEach(function (request) {
      temp.push(request);
    });

    // GetRequestsById
    result[1].data.forEach(function (request) {
      temp.push(request);
    });

    defer.resolve(temp);
  });

  return defer.promise;
};
0
ответ дан Srdjan 23 January 2019 в 11:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: