Я предлагаю использовать Pattern и Matcher, который почти наверняка достигнет того, чего вы хотите. Ваше регулярное выражение должно быть несколько сложнее, чем то, что вы используете в String.split.
Все довольно просто, вам не нужно $ 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)
Используйте $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;
};