Javascript 如何正确使用async/await func?

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

我正在使用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)
        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()
已经是异步函数了”-不,不是,它不返回承诺?是什么让您认为它是作为
异步函数编写的?那为什么这对回调也很重要呢?