Использование await в параметре функции - PullRequest
0 голосов
/ 04 октября 2018

Можно ли использовать await с параметром?например:

const run = async () => {
  getStudentDetails(await getStudentId());
}

Даже если это так, кажется, что это не лучшая идея.Кто-нибудь делал это раньше?

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

Да, это будет работать, поскольку вы можете использовать ключевое слово await везде, где вы можете использовать выражение.

Однако я бы предпочел слегка обновленную версию вашего кода для лучшей читабельности (идля лучшей отладки тоже):

const run = async () => {
  const studentId = await getStudentId();

  getStudentDetails(studentId);
}

Надеюсь, это поможет ?

0 голосов
/ 26 июня 2019

Я делаю это все время.Однако в случае, если вы хотите передать в функцию более одного параметра, они будут разрешены последовательно.Чтобы решить эту проблему, я написал утилиту, которая выглядит следующим образом:

async function call(func, ...args) {
    return func(...await Promise.all(args));
}

(async function() {
        console.log(await call(functionToCall, delay(2000), delay(2000)));
})();

С этим синтаксисом функция вызывается через 2 секунды вместо 4

0 голосов
/ 04 октября 2018

Да, вы можете использовать await выражения в любом произвольном контексте (, где он анализирует ) внутри async function, в том числе в качестве аргументов для вызовов функций.В этом нет ничего плохого.

Это эквивалентно

const run = async () => {
  const studentId = await getStudentId();
  getStudentDetails(studentId);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...