Возможно, это ограничение языка, но я пытаюсь выяснить, как мне избежать использования одного ключевого слова await
для набора последовательных разрешений обещаний. Я пытаюсь добиться чего-то удобочитаемого, например:
const workoutExercises = await Workout.get(1).workoutExercises;
Workout.get
обращается к базе данных и возвращает Promise
. Обещание разрешается до экземпляра Workout
, который имеет метод get
ter в экземпляре с именем workoutExercises
, который также является Promise
, который разрешается в массив WorkoutExercise
s.
Приведенный выше код не работает и ожидает только Workout.get
разрешения; также не ждет разрешения .workoutExercises
. Приведенные ниже примеры кода DO работают, но я пытаюсь добиться однострочности / большей читабельности:
1:
const workoutExercises = await (await Workout.get(1)).workoutExercises;
2:
const workout = await Workout.get(1);
const workoutExercises = await workout.workoutExercises;
Редактировать # 1 Обновлены заголовок и описание, чтобы пояснить, что проблема заключается не в разрешении цепочки Обещаний, а в разрешении Обещания, основанном на разрешении предыдущего Обещания.
Workout.get --> <Promise> --> workout --> .workoutExercises --> <Promise> -> desired result