关于处理http request中next()与return next()的一点小问题
个人在用nodejs express做一些小项目,在开发和学习的过程中遇到一点小疑问,如下: 处理http request过程中,会有一些middleware来做一些patch和验证的工作,执行通过之后一般会调用next()来进行下一步的处理, 但是就next()这一步遇到了两种写法,有的直接调用next() 然后return,有的直接return next()。 所以想请教一下,next(); return; 和 return next();这两种写法,有什么区别吗?会对之后的操作带来什么影响吗?
8 回复
没什么区别,express项目中如果需要记录程序状态一般把状态信息绑定到req或res对象上,不会把状态绑定到中间件的返回值上
这样,实际应用中确实是把中间件绑定到req和res上……
return next(),在这里等同于是next后然后return 由于这里的返回值不会被用到,所以就是两个其实是等同的。
写法比较简洁而已,你会在js中看到各种这样的写法,不知道是谁带起来的
结果一样,执行过程不一样 自豪地采用 CNodeJS ionic
@AnzerWall 原来是这样……还以为是不同写法会有不同的用途……
//第一种 return next();
app.use( function(req, res, next) {
....处理业务逻辑代码
return next();
console.log('hello~'); //这行不会被打印。因为上一行已经 return了。
});
//第二种 next(); return;
app.use( function(req, res, next) {
....处理业务逻辑代码
next();
console.log('hello~'); //这行会被打印。
return;
console.log('hello cnodejs!'); //这行不会被打印。
});
app.use( function(req, res, next) {
....处理业务逻辑代码
next(); return;// 这样跟 return next(); 效果一样
console.log('hello~'); //这行不会被打印。
});
没区别
有区别的
来自酷炫的 CNodeMD