沈斌
2018-07-10 f00a2b2acc1480c21234001c78da43eec48683d1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
try {
  var defaultCo = require('co');
} catch (err) {}
 
module.exports = function wrap(gen, co) {
  if (!co) co = defaultCo.wrap;
 
  var fn = co(gen);
 
  if (gen.length === 4) {
    return function(err, req, res, next) {
      var isParam = !(err instanceof Error);
      var callNextRoute = next;
      if (isParam) {
        callNextRoute = res;
      }
      return fn(err, req, res, next).catch(callNextRoute);
    }
  }
 
  return function(req, res, next) {
    return fn(req, res, next).catch(next);
  };
};