我有一个带物品的商店。商店可以收到多个suspendEvents(true)
,每次调用时都会添加一个计数器。
示例:
var myStore = //get store from somewhere
// myStore.eventsSuspended is 0
myStore.suspendEvents(true);
// myStore.eventsSuspended is 1
myStore.suspendEvents(true);
// myStore.eventsSuspended is 2
要恢复商店resumeEvents()
上的活动,必须调用两次。我一直在浏览文档。但无法找到一种干净的方式来呼叫resumeEvents()
并恢复所有事件。
正确知道的解决方案之一是:
do {
myStore.resumeEvents();
}
while (myStore.eventsSuspended > 0);
但它感觉不安全,因为如果它们在以后的版本中改变它的工作方式,这可能会导致难以调试的不良行为。
任何人都知道如何解决这个问题?
答案 0 :(得分:0)
是的,这确实很危险,你的循环可能会在另一段代码(例如布局管理器)暂停它们时调用resume事件。
您需要确保为挂断它们的每个电话调用resumeevents。它是以这种方式构建的,因为ext代码中的模块化方法使得事件不会恢复,直到所有已暂停事件的部分都触发了恢复。