【发布时间】:2015-09-24 13:57:44
【问题描述】:
在下面的代码中,一个项目被添加到复合操作中的协作列表中。在列表上的 VALUES_ADDED 事件处理程序中,启动另一个复合操作。运行代码时,我收到以下错误消息:Exception: Uncaught Error: gapi.drive.realtime.Error: {type: invalid_compound_operation, message: "Already committed this local change.", isFatal: true}
这似乎并不少见,并且在我的应用程序中自然出现,尽管方式更复杂,所以我不能将映射分配移动到原始复合操作中。我在实时 api 指南或参考文档中也找不到对这种限制的任何参考。有没有办法在复合操作结束之上的调用堆栈中开始新的复合操作?
var va = function(event) {
doc.getModel().beginCompoundOperation('b');
doc.getModel().getRoot().get('map').set('key', 'value');
doc.getModel().endCompoundOperation();
};
doc.getModel().getRoot().get('list').addEventListener(gapi.drive.realtime.EventType.VALUES_ADDED, va);
doc.getModel().beginCompoundOperation('a');
doc.getModel().getRoot().get('list').push(100);
doc.getModel().endCompoundOperation();
【问题讨论】: