是否可以在异步功能之外使用await

时间:2018-09-30 18:22:37

标签: javascript node.js asynchronous async-await ecmascript-2017

这是我在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 :(得分:3)

您不能在异步函数外使用await。 绕过此限制的一个技巧是使用异步IFEE:

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

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

答案 1 :(得分:1)

主要问题的简短答案:“是否可以在await函数之外使用async

例如,有多种方法来访问async操作的值

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

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

由于asyncPromises的包装器,因此您需要使用then来访问结果,并在执行完成后触发回调。