Можно ли использовать await вне асинхронной функции - PullRequest
0 голосов
/ 30 сентября 2018

Это моя простая функция в nodejs

const myFunction = async() => {
    const exercises = await Exercise.find({ workoutId })
    return exercises
}

const value = await myFunction()

Но когда я выполняю await вне асинхронной функции, она выдает ошибку

 await is a reserved word

Теперь, как мне ждать значениявне асинхронной функции?Нужно ли использовать обратный вызов или .then?Тогда какой смысл async and await?

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Краткий ответ на главный вопрос: «Можно ли использовать await за пределами async функции» нет .

Но есть несколько способовполучить доступ к значению операции async, например

const myFunction = async() => {
    const exercises = await Exercise.find({ workoutId })
    return exercises
}

const execution = () => {
    myFunction().then( ( exercises ) => {
        console.log( exercises );
    });
}

Поскольку async является оберткой для Promises, чтобы получить доступ к результату, вам нужно использовать then, и когда выполнение будет завершено,обратный вызов сработал.

0 голосов
/ 30 сентября 2018

Вы не можете использовать await вне асинхронной функции.один из способов обойти это ограничение - использовать асинхронный IFEE:

const myFunction = async() => {
    const exercises = await Exercise.find({ workoutId })
    return exercises
};

(async () => {
    const value = await myFunction()
})()
...