2 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊
結(jié)論:在絕大多數(shù)情況下,這個(gè)return是沒有任何實(shí)際作用的,除了一些特殊的場(chǎng)景,比如從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實(shí)例,方便開發(fā)者后續(xù)的操作(在請(qǐng)求處理完成之后)。
當(dāng)然,上面的例子因?yàn)楸容^簡(jiǎn)單,不一定要用.then()也能實(shí)現(xiàn)。只不過返回Promise實(shí)例,編碼起來會(huì)方便很多。
比如你想在koa處理完請(qǐng)求后做一些事情,如果沒有return的話,你需要些一些比較惡心繁瑣的代碼來判斷請(qǐng)求是否已經(jīng)處理完。
添加回答
舉報(bào)