Node.js 是否需要在膝关节炎框架中使用异步函数? 我开始学习膝关节炎和KOA文档,我发现了这样的演示代码: const Koa = require('koa'); const app = new Koa(); app.use(async ctx => { ctx.body = 'Hello World'; }); app.listen(3000);

Node.js 是否需要在膝关节炎框架中使用异步函数? 我开始学习膝关节炎和KOA文档,我发现了这样的演示代码: const Koa = require('koa'); const app = new Koa(); app.use(async ctx => { ctx.body = 'Hello World'; }); app.listen(3000);,node.js,async-await,koa,koa2,Node.js,Async Await,Koa,Koa2,该中间件使用异步函数,但代码是同步的。这是不是需要在膝关节炎中到处使用异步函数,或者有具体的情况?简短回答: 您也可以使用同步功能,它将完美地工作 长答覆: 承诺vs异步 异步函数可以由同步函数替换,同步函数将Promise返回为sync函数(有关更多信息,请参阅) 膝关节炎 Koa正在使用Koa compose来处理中间件 如果您在中选中compose函数 代码是 return Promise.resolve(fn(context, function next () { return

该中间件使用异步函数,但代码是同步的。这是不是需要在膝关节炎中到处使用异步函数,或者有具体的情况?

简短回答: 您也可以使用同步功能,它将完美地工作

长答覆: 承诺vs异步 异步函数可以由同步函数替换,同步函数将Promise返回为sync函数(有关更多信息,请参阅)

膝关节炎 Koa正在使用Koa compose来处理中间件

如果您在中选中compose函数

代码是

 return Promise.resolve(fn(context, function next () {
  return dispatch(i + 1);
 }))
然后,您的中间件函数
fn
被绑定到
Promise.resolve
中,这意味着即使您返回non-Promise,输出也将被视为承诺

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

 app.use(function(context){
   // ...
   return Promise.resolve();
 })
作为与异步兼容的同步设计