我可以在JavaScript的单个try块内添加多个await调用吗?

sha*_*rsn 5 javascript node.js async-await ecmascript-6

async function(req, res) {
    try {
        const user = await userCtrl.getUser();
        const userMaps = await mapsCtrl.findDetails(user.mapId);
        res.send(userMaps);
    } catch (error) {
        //handle error
        res.status(400).send(error)
    }

}

// user controll

function getUser() {

    return new Promise(function(resolve, reject) {
        //data base read using mysql
        req.app.get("mysqlConn").query(query, function(error, results, fields) {
            if (error) {
                reject(error);
            }
            resolve(results);
        });

    })
}

//maps controller function is also like above one.
Run Code Online (Sandbox Code Playgroud)

这是快速获取路线的代码句柄部分。有时拒绝的代码没有被捕获。我收到200状态代码中从MySQL返回的错误。

Vir*_*lke 5

是的,您可以在单个 try catch 块中编写多个等待。因此,如果上述任何等待失败,您的 catch 块将收到错误。有关 async-await 的更多信息,请参阅此链接 - https://javascript.info/async-await

拒绝()或解决()并不意味着功能被终止。所以我们必须显式地从函数返回以避免进一步的代码执行。在您的情况下,将 resolve 放在 else 块中,或者在调用拒绝之后将 return 语句放在 if 块中!有关更多信息,请参阅此链接:-我需要在提前解决/拒绝后返回吗?

我希望这有助于:) 问候。