从Express路由器内部调用异步功能

时间:2018-07-30 23:42:58

标签: javascript node.js express callback async-await

我有这种形式的异步功能 let test = async () => {} 完成此功能后,我将使用test.then().catch()部分。

我希望通过传递post参数从路由器内部调用此功能。这可能吗?

我遇到了这个问题: Right way to call async function inside express js route

但是在该代码段中,他没有提到.tehn()。catch()到哪里。 另外,我是否可以像现在一样在异步函数中传递参数(匿名函数)。

1 个答案:

答案 0 :(得分:1)

当然可以。我不确定您尝试了什么,但这很简单:

router.post("/something", (req, res) => {
    // you can pass any arguments from the request here to your async function
    test(req.body).then(result => {
        res.send(result);
    }).catch(err => {
        console.log(err);
        res.status(500).send("Error");
    })
});
  

此外,我是否可以像现在一样在异步函数中传递参数(匿名函数)。

是的,可以。

let test = async (arg1) => {
    // since this is async, you would have some asynchronous operations in here
    console.log(arg1);
    return arg1;
};

仅供参考,另一个问题是使用await,因此通常将.catch()try/catch一起使用,而不是await。由于您仅询问有关调用单个异步函数的信息,因此您最好使用.then().catch(),因为async/await并没有真正使事情变得更短或更简单。