zoukankan      html  css  js  c++  java
  • koa2 ctx.body 在 mysql query的回调函数中无法赋值的问题

    问题简介:在 koa2中 关于 请求的函数 使用了async 和 await ,当 执行完数据库操作之后,将返回的数据在回调函数中 赋值给 ctx.body 时,无法赋值

     

     出现原因:

    在 async 函数内,使用await来执行异步操作,而await 会直接解析 Promise 的resolve 或者reject 中的值。对于有回调函数的操作,并不会被 async 等待,而直接执行,所以在回调函数中书写的ctx.body = results 操作时 页面已经返回,且并未获取到数据库返回的值。所以页面会显示notFOUND。

    解决办法:

    将 query 函数外部包一个 new Promise 函数,通过promise 来 resolve (results),来配合await 操作完成 异步操作。而 async 与 await 的作用是为了将异步操作转换为同步操作,所以 ctx.body 赋值 操作 可以写在 await 操作后边。这样就可以成功返回正确的数据。

  • 相关阅读:
    joblib to implement multi-progress
    python排序
    回归评估:R2
    评估曲线
    模型融合:Stacking
    排列重要性
    单点登陆
    特征漂移检测
    python数组切片
    docker -ti
  • 原文地址:https://www.cnblogs.com/caimengting/p/15591944.html
Copyright © 2011-2022 走看看