Добрый день!
Есть объект:
resolve = {
promise1: (MyService) => MyService.all(),
promise2: (MyService2, promise1) => { return promise1.then((data) => MyService2.getData(data.id))},
}
Обрабатывается он так:
angular.forEach(resolve, function (value, key) {
resolve[key] = $injector.invoke(value, null, resolve, key);
});
$q.all({
...
locals: $q.all(resolve)
}).then(function (data) {
...
}
Проблема в том что в promise2 зависимость promise1 приходит как Promise, хотя логичнее ожидать там уже результат, т.е. выглядело бы так:
promise2: (MyService2, promise1) => MyService2.getData(promise1.id)
Нашёл способ, но не нравиться, больно уж смахивает на костыль:
$q.all({
...
locals: $q.all(resolve)
}).then(function (data) {
resolve.promise2.then((item) => {
resolve.promise2 = item;
});
...
}
Есть ли другой способ добиться того что бы аргументом был результат Promise ?