使用req&跨职能部门

时间:2016-09-13 20:43:13

标签: node.js promise es6-promise

每次与承诺合作时,我发现function ***(req, res){ ... }令人沮丧。所以我想到了制作顶部参考对象,ReqRes

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()); 
}

您对此有何看法,优点和缺点? 如果这是反模式让我知道并建议一个首选方式。

谢谢

1 个答案:

答案 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变量(在这种情况下,您真的不需要它是全局的)