gpt4 book ai didi

javascript - Express.js 和 koa2.js 在处理异步函数时的区别?

转载 作者:行者123 更新时间:2023-11-29 03:17:45 25 4
gpt4 key购买 nike

我有以下代码使用 express 设置路由器,它工作正常:

router.get('/',(req,res)=>{
queries.getAll().then(stickers=>{
res.json(stickers)
})
})

queries.getAll() 是一个函数,它将执行 MySQL 查询并获取我需要的贴纸数据。但是,当我用koa2写类似的东西时,它就不行了:

router.get('/', async (ctx, next) => {
queries.getAll().then(stickers=>{
ctx.body = JSON.stringify(stickers)
})
}

据我所知,我必须在查询函数之前加上“await”,如下所示:

await queries.getAll().then(stickers=>{
ctx.body = JSON.stringify(stickers)
})

所以这意味着在 Koa2 中你必须等到 MySQL 查询完成,然后将结果发送给客户端。否则什么也不会发送。但是,在 Express 中,结果似乎会在查询完成后立即自动发送。这是为什么?也许我缺少有关 Nodejs 的一些基础知识。请帮忙。

最佳答案

koa 允许您利用异步函数,这与使用回调的 express 不同。如果你想等待数据库查询,那么 await 表达式必须在异步函数中。

const Koa = require('koa');
const app = new Koa();

app.use(async (ctx, next) => {
let res = await queries.getAll();
res.then(
//do stuff
)
});

关于javascript - Express.js 和 koa2.js 在处理异步函数时的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52182002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com