每次与承诺合作时,我发现function ***(req, res){ ... }
令人沮丧。所以我想到了制作顶部参考对象,Req
和Res
let Req;
let Res;
// i can also do "const { username } = Req.body" to make "username" avaliable to all functions
function promise() { return Promise.resolve(); }
function promise2() { Res.send('test'); }
module.exports = (req, res, next) => {
Req = req
Res = res
return promise().then(() => promise2());
}
您对此有何看法,优点和缺点? 如果这是反模式让我知道并建议一个首选方式。
谢谢
答案 0 :(得分:1)
而不是让每个承诺用req和res解决(需要在一个对象中,因为你只能解决一件事)。
您可以使用此模式。
function promise1(req, res) {
req.whatever = ''; // will be available in future promises
return Promise.resolve(foo); // you don't need to resolve req and res
}
function promise2(req, res) {
return function (foo) {
// whatever promise1 resolved to, will be here :)
res.send('test');
}
}
module.exports = (req, res, next) => {
return promise1(req, res)
.then(promise2(req, res));
}
在这种情况下,您不会在模块的全局范围内提升您的Req和Res变量(在这种情况下,您真的不需要它是全局的)