2015-06-06 20 views
1

我可以知道某個特定事件是一個複合操作,即使是特定操作的一部分......在谷歌實時,有沒有辦法知道複合操作是完整的?

tags.addEventListener(gapi.drive.realtime.EventType.VALUES_SET,handleEvent); 

function handleEvent(serialized) { 
    if (serialized.compoundOperationNames.indexOf("LOTS OF TAGS CHANGING") > -1) { 
}; 

...但我怎麼知道該化合物操作完成,而它現在是時候做點什麼了?

我希望能夠做這樣的事情:

if (serialized.lastCompoundOpEvent) { 
    // Read all the tags and do an expensive bulk operation here 
} 
+0

您是否嘗試在當前同步塊完成後使用setTimeout來獲取回調?一旦你發現了一個變化,排隊一個定時器,它將處理你的批量操作。如果你確定你的「昂貴的批量操作」是一個瓶頸,那麼等待定時器啓動的額外的幾個毫秒可能是值得的。 –

+0

好吧,他們是一堆單獨的事件,所以不是任何類型的同步塊。任何選擇計時器的時間都是任意的,並且可能在某個時候咬我。另外,即使我在一個複合操作結束後選擇了一段時間......另一個複合操作沒有開始,也沒有保證。 – HeyHeyJC

+0

尋找複合操作結束的目標是什麼?有沒有一種方法可以獨立於實時api來設定目標? (即,您希望在運行昂貴的批處理操作之前等待數據模型中的突變完成)。在您完成處理數據後,使用setTimeout可以讓您有機會延遲任何昂貴的工作。 –

回答

0

我不認爲有任何方式做具體你列出什麼形容那裏。

如果目標是查找特定複合操作的所有事件,則可以偵聽ObjectChangedEvent。一個ObjectChangedEvent應該包含該對象及其子項的複合操作的所有事件的列表。

+0

對於在複合操作中更改的每個對象,是否只生成一個ObjectChangedEvent?如果是這樣,那完全符合法案。 – HeyHeyJC

相關問題