【发布时间】:2020-07-23 21:12:11
【问题描述】:
您好,我是 Express/Node 的新手,正在寻找指导和解释。
如果我有一个 asyc 函数作为中间件,这本质上会立即返回一个 Promise。让我们模拟一个函数。
async function verifyToken() {
try {
await API call...
next() // <-- continue to the next middleware if the api call was successful
} catch (err) {
// catch exceptions from api call
}
}
我现在想知道什么时候像这样使用这个功能:
this.router.get("/test", verifyToken, (req, res) => {
res.send("GET TEST");
});
如果 verifyToken 是异步的,这是否意味着它会立即被调用并返回一个 Promise,然后节点继续执行?异步方法如何作为中间件工作?
【问题讨论】:
-
它会立即被调用,但只要有
await关键字,代码就会重新编译成API call.then(next),因此无论是否调用过.then(),await都将始终有效。对于任何承诺返回函数都是如此。尝试在中间件之外自己调用verifyToken:verifyToken({},{},()=>console.log('next was called'))
标签: node.js express asynchronous promise async-await