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在服务器端失败但在客户端成功,op2op3会怎样?
它们都会被回滚吗?

如果 op1 失败,则 op2 将回滚(因为它是对不存在的对象的更新)。假设 op3 不会自动失败,它也会成功。

如果你想阻止 op3 发生,除非你确定 op1 已经成功,那么你可以在 op1 的回调中完成。