gpt4 book ai didi

javascript - 多个方法调用顺序回调的 meteor 模式

转载 作者:行者123 更新时间:2023-12-01 08:07:00 24 4
gpt4 key购买 nike

我在 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');
}

});`

最佳答案

看看reactive-method包裹。我认为它完全满足您的需要:它将异步 Meteor.call 包装到同步代码中。有了它,你的代码会看起来更干净,比如

try {
const result = ReactiveMethod.call('unsetProduct', product._id, omitObj);
} catch (error) {
AppMessages.throw(err.reason, 'danger');
}

try {
const nestedResult = ReactiveMethod.call('editProduct', product._id, object);
} catch (error) {
FormMessages.throw(err.reason, 'danger');
}

try {
const evenMoreNestedResult = ReactiveMethod.call('editProductTemplate', self._id, obj);
} catch (error) {
FormMessages.throw(err.reason, 'danger');
}

try 语句中添加一些逻辑会看起来更好。

关于javascript - 多个方法调用顺序回调的 meteor 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34136713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com