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

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

Похожие вопросы