【问题标题】:What is the difference between querying a database and requesting an endpoint?查询数据库和请求端点有什么区别?
【发布时间】:2021-06-23 03:21:46
【问题描述】:

最近我正在尝试学习猫鼬,但我遇到了一个代码,这让我很困惑。

为什么我们在查询数据库时在回调函数的开头写 async 关键字?是不是因为回调函数就已经异步了?

router.get('/', async (req, res) => {
try {
    const subscriber = await Subscriber.find()
} catch (error) {
    res.status(500).json({msg: error.message})
}})

即使是这样做的方式,我们为什么不也遵循相同的模式,在这个基本的路由处理中将 async 关键字放在回调函数的开头?

router.get('/', (req, res) => {res.send('Hello from homepage')})

【问题讨论】:

    标签: javascript node.js express asynchronous mongoose


    【解决方案1】:

    你必须在回调的开头写async关键字,因为里面有await关键字。 Async/await 是一项功能,可让您将同步函数转换为异步函数(不仅 javascript 有这种结构,其他编程语言也有)。 Async/await 是 Promise 之上的语法糖,使异步代码更易于编写和阅读。你可以找到详尽的解释here

    【讨论】:

    • 没关系,但我不明白为什么我们不对第二个例子做同样的事情。最后,服务器接受请求并返回响应。
    • 第二个示例中的回调不包含异步代码,因此没有理由使此代码异步。相反,对服务器的请求是异步的,因此您应该在客户端代码中输入如下内容:async doServerRequest() { await axios.get("/") } 如果您不等待服务器请求,您的客户端代码不会等待服务器响应,而是会继续执行方法
    猜你喜欢
    • 1970-01-01
    • 2016-03-02
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 2019-12-06
    • 1970-01-01
    相关资源
    最近更新 更多