为了账号安全,请及时绑定邮箱和手机立即绑定

为什么Koa回调函数中的数据不能响应给前端?不使用await的话

为什么Koa回调函数中的数据不能响应给前端?不使用await的话

aluckdog 2019-01-24 10:24:57
问题描述使用await可以,使用传统的回调为什么不行?相关代码   Article.find({}).skip(skip).limit(sizes)     .exec((err, docs) => {        if(err) {             ctx.body = {                code: -1,                msg: err             }         }else {            ctx.body = {               code: 0,               data: docs            }           console.log(dos) //有数据,但是前端404         }     })router.get('/getArticles', async (ctx) => {    let { sizes, pageNum } = ctx.query          sizes = Number(sizes)     pageNum = Number(pageNum)    const skip = (pageNum - 1) * sizes    const data = await Article.find({}).skip(skip).limit(sizes)         //这样可以拿到     ctx.body = {        code: 0,         data     } })你期待的结果是什么?实际看到的错误信息又是什么?如果就是用回调,不用await该怎么改才正确?
查看完整描述

1 回答

?
www说

TA贡献1775条经验 获得超8个赞

因为你的上一段代码是中回调是异步执行的,本身Article.find({}).skip(skip).limit(sizes).exec(...)这个这调用会一闪而过,koa2的中间件管道会瞬间执行完毕,给前端响应. 等你数据查询回来,回调被调用的时候,ctx已经无意义.

查看完整回答
反对 回复 2019-01-24
  • 1 回答
  • 0 关注
  • 913 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信