Мы используем события для управления рабочим процессом в нашем приложении nodejs.Мне было интересно, можем ли мы заменить события обещаниями?Я очень сильно воспринимаю события, такие как обратные вызовы, в которых имя события похоже на имя вызываемой функции, следовательно, было бы хорошо переключиться на обещания?Нужно мнение опытных людей по этому вопросу.
add : function(req, res, next){
var workflow = req.app.utility.workflow(req, res);
workflow.on('checkPermissions', function(){
// If admin is permitted to add Widget template
var isPermitted = permissions.getPermission(req.user.group, "widget-template", "add");
console.log("Is permitted to add WidgetTemplate:-", isPermitted);
if(!isPermitted)
workflow.emit('exception', 'Not Permitted');
else
workflow.emit('validate');
});
workflow.on('validate', function(){
if(!req.body.wID)
workflow.outcome.errfor.wID = 'required';
if(!req.body.wname){
workflow.outcome.errfor.wname = 'required';
}
if(workflow.hasErrors())
{
workflow.outcome.errfor.msg = 'Please fill all the fields';
return workflow.emit('response');
}
else
workflow.emit('add');
});
workflow.on('add', function(){
var WidgetTemplate = req.app.db.models.WidgetTemplate;
var fieldsToSet = new WidgetTemplate({
widgetTempID : req.body.wID,
name : req.body.wname,
devType : req.body.devTypes,
sensors : req.body.sensors,
properties : req.body.properties? req.body.properties : [],
multiple_devices : req.body.multiple_devices? req.body.multiple_devices : false,
added_by : req.user.id
});
console.log("FieldsToset", fieldsToSet);
fieldsToSet.save()
.then(
() => {
console.log("Widget Template created...");
workflow.emit('response');
}
)
.catch((err) => {
console.log("Some error occurred", err.code);
if(err.code == 11000)
workflow.emit('exception', 'Duplicate widget template ID');
else
workflow.emit('exception', err);
});
});
workflow.emit('checkPermissions');
}