【问题标题】:Is it required to use async functions in koa framework?koa框架中是否需要使用异步函数?
【发布时间】:2018-09-10 18:57:09
【问题描述】:

我开始学习 koa.js,在 koa 文档中我发现了这样的演示代码:

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

app.use(async ctx => {
  ctx.body = 'Hello World';
});

app.listen(3000);

这个中间件使用异步功能,但代码是同步的。这是否需要在 koa 中的任何地方使用异步函数或有特定情况?

【问题讨论】:

    标签: node.js async-await koa koa2


    【解决方案1】:

    简答:

    您也可以使用同步功能,它会完美运行。

    长答案:

    承诺与异步

    异步函数可以替换为将 Promise 返回到 sync 函数中的同步函数(有关详细信息,请参阅http://2ality.com/2016/10/async-function-tips.html

    Koa 撰写

    Koa 正在使用 koa-compose 来处理中间件。

    如果您在 https://github.com/koajs/compose/blob/master/index.js

    代码是

     return Promise.resolve(fn(context, function next () {
      return dispatch(i + 1);
     }))
    

    您的中间件函数 fn 然后绑定到 Promise.resolve 这意味着即使您返回非 Promise,输出也将被视为 Promise。

    同步承诺

    它没有在任何地方记录,建议您避免使用未记录的模式,我会这样做:

     app.use(function(context){
       // ...
       return Promise.resolve();
     })
    

    作为与 async 兼容的同步设计。

    【讨论】:

      猜你喜欢
      • 2020-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-21
      • 1970-01-01
      • 2017-05-15
      • 2021-02-09
      • 1970-01-01
      相关资源
      最近更新 更多