2 回答

TA贡献1796条经验 获得超10个赞
结论:在绝大多数情况下,这个return是没有任何实际作用的,除了一些特殊的场景,比如从express迁移到koa。
看具体例子:
const http = require('http');
const koa = require('koa');
const koaApp = new koa();
koaApp.use(async ctx => {
ctx.body = 'call api';
});
const koaCallback = koaApp.callback();
const express = require('express');
const expressApp = express();
expressApp.use('/api', (req, res, next) => {
koaCallback(req, res)
.then(() => {
console.log('api is called');
})
});
expressApp.listen(3000);
return this.handleRequest(ctx, fn)返回了promise实例,方便开发者后续的操作(在请求处理完成之后)。
当然,上面的例子因为比较简单,不一定要用.then()也能实现。只不过返回Promise实例,编码起来会方便很多。
比如你想在koa处理完请求后做一些事情,如果没有return的话,你需要些一些比较恶心繁琐的代码来判断请求是否已经处理完。
添加回答
举报