Meteor 如何处理依赖失败的乐观操作?
How does Meteor handle dependent failed optimistics operations?
Meteor 的乐观 UI 如何处理依赖操作的服务器拒绝和错误?
如果我这样做:
var item1Id = Items.insert({list: groceriesId, name: "Watercress"}); // op1
var item = Items.findOne({_id: item1Id});
Items.update(item, {$set: {name: "Peppers"}}); // op2
Items.insert({list: groceriesId, name: "Cheese"}); // op3
如果op1
在服务器端失败但在客户端成功,op2
和op3
会怎样?
它们都会被回滚吗?
如果 op1 失败,则 op2 将回滚(因为它是对不存在的对象的更新)。假设 op3 不会自动失败,它也会成功。
如果你想阻止 op3 发生,除非你确定 op1 已经成功,那么你可以在 op1 的回调中完成。
Meteor 的乐观 UI 如何处理依赖操作的服务器拒绝和错误?
如果我这样做:
var item1Id = Items.insert({list: groceriesId, name: "Watercress"}); // op1
var item = Items.findOne({_id: item1Id});
Items.update(item, {$set: {name: "Peppers"}}); // op2
Items.insert({list: groceriesId, name: "Cheese"}); // op3
如果op1
在服务器端失败但在客户端成功,op2
和op3
会怎样?
它们都会被回滚吗?
如果 op1 失败,则 op2 将回滚(因为它是对不存在的对象的更新)。假设 op3 不会自动失败,它也会成功。
如果你想阻止 op3 发生,除非你确定 op1 已经成功,那么你可以在 op1 的回调中完成。