Javascript 如何正确使用async/await func?
我正在使用express开发node.js服务器。我正在处理一个Javascript 如何正确使用async/await func?,javascript,node.js,async-await,Javascript,Node.js,Async Await,我正在使用express开发node.js服务器。我正在处理一个POST请求,如下所示: app.post('/signup', async (req, res) => { let user = { email: req.body.userEmail, pass: req.body.userPass } try { let insertedUser = await User.create(user) c
POST
请求,如下所示:
app.post('/signup', async (req, res) => {
let user = {
email: req.body.userEmail,
pass: req.body.userPass
}
try {
let insertedUser = await User.create(user)
console.log(insertedUser.get('email'))
} catch (err) {
console.log(`ERROR! => ${err.message}`)
}
})
为了使它工作,我必须在回调函数之前放置async
。但是如果app.post()
已经是异步函数,为什么我必须这样做呢
我是否使用async/await,对吗?此
async/await
与app无关。post()
作为async/await异步是ES5+引入的一项功能,用于以同步方式处理函数中的异步调用。把它想象成承诺的扩展版本,只是它看起来像同步的,但做的是相同的事情。因此,您的代码在我看来是正确的。这个async/await
与app.post()无关。
异步作为async/await是ES5+引入的一项功能,用于以同步方式处理函数中的异步调用。把它想象成承诺的扩展版本,只是它看起来像同步的,但做的是相同的事情。因此,您的代码在我看来是正确的。您工作正常(除了您没有使用res
响应请求)
需要使用async
的原因是app.post()
的签名是
app.post(path: string, handler: (req: Request, res: Response) => void): void
也就是说,两个参数,一个是路径,它是字符串,另一个是处理程序,它是一个接受这两个参数的函数(它接受更多参数,但为了简单起见,现在我们忽略这些参数),并且不返回任何值
正如您所看到的,app.post()
本身没有有趣的返回值(尤其是,它不返回承诺),因此它本身不是一个异步函数
您正在传递一个函数,描述当请求到达路径时希望执行的操作(“/signup”
,在您的情况下)。由于您希望在该函数中使用异步功能(又称为await
),因此必须将该函数标记为async
TL;DR-您的处理程序函数是异步的,
app.post()
不是。您工作正常(除了您没有使用res
响应请求)
需要使用async
的原因是app.post()
的签名是
app.post(path: string, handler: (req: Request, res: Response) => void): void
也就是说,两个参数,一个是路径,它是字符串,另一个是处理程序,它是一个接受这两个参数的函数(它接受更多参数,但为了简单起见,现在我们忽略这些参数),并且不返回任何值
正如您所看到的,app.post()
本身没有有趣的返回值(尤其是,它不返回承诺),因此它本身不是一个异步函数
您正在传递一个函数,描述当请求到达路径时希望执行的操作(“/signup”
,在您的情况下)。由于您希望在该函数中使用异步功能(又称为await
),因此必须将该函数标记为async
TL;DR-您的处理程序函数是异步的,
app.post()
不是。“app.post()
已经是异步函数”-不,不是,它不返回承诺?是什么让您认为它是作为异步函数编写的?这对回调有什么影响?“app.post()
已经是异步函数了”-不,不是,它不返回承诺?是什么让您认为它是作为异步函数编写的?那为什么这对回调也很重要呢?