Использование обещаний и $q.all()
var promises = [];
promises.push(self.searchByUserCode(self.searchDto.userCode).then(function (data) {
self.userCode= data.find(function (item) {
return item.mstId === self.searchDto.userCode;
});
}));
.then()
возвращает обещание.Сделайте это для 3 сервисных звонков, а затем дождитесь их завершения
$q.all(promises).then(function(){
self.searchPeople();
})
Я вижу, что вы можете не звонить на все ваши услуги.$q.all()
будет ждать обещания, которое вы положите в массив.Имейте в виду, что он также выполнит ваш вызов, если ни одна из ваших служб не была выполнена, если вам нужен хотя бы один из них, вы можете добавить проверку для promises.length > 0
до $q.all()
.
Таким образом, если вы вызываете только одну из своих служб, массив обещаний будет иметь один элемент и после его завершения вызовет вашу локальную функцию.