Javascript 从express router内部调用异步函数

Javascript 从express router内部调用异步函数,javascript,node.js,express,callback,async-await,Javascript,Node.js,Express,Callback,Async Await,我有一个这种形式的异步函数 let test=async()=>{} 在这个函数之后,我有了test.then().catch()部分 我希望通过传递post参数从路由器内部调用此函数。这可能吗 我遇到了一个问题: 但是在代码片段中,他没有提到.tehn().catch()的位置。 另外,我可以像现在一样在异步函数中传递参数(匿名函数)。确保这是可能的。我不确定你试过什么,但很简单: router.post("/something", (req, res) => { // you

我有一个这种形式的异步函数
let test=async()=>{}
在这个函数之后,我有了
test.then().catch()
部分

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

我遇到了一个问题:

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

确保这是可能的。我不确定你试过什么,但很简单:

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
,因此通常使用
try/catch
await
来代替
.catch()
。因为您只要求调用一个异步函数,所以您最好使用
.then()
.catch()
作为
async/await
并不会使事情变得更短或更简单。

您的答案很好!但是如果异步函数不在同一个文件中,我只需要将它包含在routes.js文件的开头?正确吗?@user1584421-这是标准的node.js,与路由或异步无关。如果要调用另一个文件中的函数,必须使用
require()
import
来“导入”另一个文件,以便可以从该另一个文件访问导出的函数。