Использование службы $ q :
export class FooController {
constructor(FooService, $q) {
this.fooService = FooService;
this.$q = $q;
}
$onInit() {
this.data = [...];
this.updateData();
}
updateData() {
let promises = [];
this.data.forEach(i => promises.push(this.fooService.get(i)));
̶P̶r̶o̶m̶i̶s̶e̶.̶a̶l̶l̶(̶p̶r̶o̶m̶i̶s̶e̶s̶)̶
this.$q.all(promises)
.then(res => {
this.something = res;
̶t̶h̶i̶s̶.̶$̶s̶c̶o̶p̶e̶.̶$̶a̶p̶p̶l̶y̶(̶)̶;̶
})
}
}
FooController.$inject = ['FooService', '$q'];
export const fooComponent = {
templateUrl: templateUrl,
controller: FooController
}
AngularJS изменяет обычный поток JavaScript, предоставляя собственный цикл обработки событий.Это разбивает JavaScript на классический и AngularJS контекст выполнения.Только операции, которые применяются в контексте выполнения AngularJS, выиграют от привязки данных AngularJS, обработки исключений, отслеживания свойств и т. Д.
Обещания ES6 не интегрированы с контекстом выполнения AngularJS.Вместо этого используйте обещания, созданные службой $ q .