我有以下快递控制器:
var Promise = require('bluebird');
var co = Promise.coroutine;
class MainController {
constructor(env) {
this.env = env;
}
index() {
var self = this;
return co(function*(req, res, next) {
var trips = yield self.env.repo.trips.getTrips();
var viewModel = new ViewModelBase(req, {layout: 'layout', trips: trips});
res.render('index', viewModel);
});
}
}
我按照以下方式使用此控制器:
var mainController = new MainController(this.env);
router.get('/', mainController.index());
有没有办法让这段代码更干净? 我可以避免var self = this;在每个合作例程之前? 我在哪里可以找到有关快递4中使用es6的最佳实践指南?
答案 0 :(得分:0)
你可以在节点4+和箭头函数中使用没有蓝鸟的promises,所以也许这样......
//SERVICE
getTrips(){
return new Promise((resolve, reject) => {
//TRIP LOGIC?
resolve(tripData);
//reject(error);
});
}
//IN THE CONTROLLER
index(){
getTrips(someData).then((results)=>{
let viewModel = new ViewModelBase(req, {layout: 'layout', trips: results});
res.render('index', viewModel);
}).catch((error)){ //handle error });
}