@bioforge
Верстающий пыхер

Как правильно внедрить Promise зависимость в $injector.invoke?

Добрый день!

Есть объект:
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 ?
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ответы на вопрос 1
AMar4enko
@AMar4enko
А чем вас первый вариант не устроил-то? Тем что надо написать .then()?
И ради того, чтобы не писать лишних 20 символов, вы хотите городить костыль?
Тогда мне ход ваших мыслей непонятен.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы