等待初始化后使用

时间:2018-09-14 15:25:02

标签: javascript async-await

我想连接mongoDb并异步执行代码。

async function test() {
    let task = asyncTask() //return a promise
    //function still running
    await task
    //code executed only if task is resolved
}

使用这样的等待是正确的吗?

1 个答案:

答案 0 :(得分:5)

是的,如果您将await与异步函数一起使用,则代码将一直阻塞,直到承诺已解决或失败为止。您应该将try块包装在try catch中以处理任何错误。

async function test() {
    let task = asyncTask()
    //function still running
    try {
        await task
        //code executed only if task is resolved
    } catch (err){
        //Something went wrong
        throw new Error(err);
    }
}

使用async / await具有与promise相同的功能,但只是提供了一种更同步的代码编写方式。

如果您希望按照承诺重写代码,则它看起来像:

function test() {
    myPromise('some arguments')
    .then(result => console.log(`Task completed: ${result}`);)
    .catch(err => console.error(err));
}