【发布时间】:2016-03-12 05:47:24
【问题描述】:
我在 Meteor 中编码时经常遇到这种模式,我发现自己进行了多个相互嵌套的方法调用——第一个方法触发,然后在回调中,第二个触发取决于第一个方法的结果,等等。是否有更好的模式来使用多个方法而无需在回调中嵌套方法调用?代码很快就会变得混乱。
Meteor.call('unsetProduct', product._id, omitObj, function(err, result) {
if(!err) {
Meteor.call('editProduct', product._id, object, function(err, result) {
if(!err) {
//if no error, then continue to update the product template
Meteor.call('editProductTemplate', self._id, obj, function(err, result) {
if(!err) {
//call some other method
}
else {
FormMessages.throw(err.reason, 'danger');
}
});
}
else {
FormMessages.throw(err.reason, 'danger');
}
});//end edit product
}
else {
AppMessages.throw(err.reason, 'danger');
}
});`
【问题讨论】:
-
您是否有理由不想将所有这些都放在一个服务器方法上?在可能的情况下,这确实是处理这些事情的最简单方法。
-
使用发出相关错误的单一方法似乎更好。如果你想要一个更好的异步进程设计模式,你可以使用future/promise。
标签: javascript meteor methods