我将东西放入队列并逐个处理它们。这些东西可能属于AngularJS范围。如果它所属的范围在我到达时已被破坏,我想跳过处理它。 (用户已经远离显示结果的UI,因此没有必要计算它。)
一种选择是:
function enqueue(stuff, scope) {
queue.push(stuff);
scope.$on('$destroy', function() {
queue.discard(stuff);
});
}
但我觉得这有点重量级。它为每个“东西”添加了一个事件处理程序。 (当我将项目出列时,我还需要删除此事件处理程序。)我觉得最好检查范围是否在我出列项目时被销毁。
function process(stuff, scope) {
if (scope.$destroyed) { // Fictional API.
return; // Skip processing, scope is already gone.
} else {
... // Actually process "stuff".
}
}
scope.$destroyed
已经组成,但我正在寻找类似的东西。谢谢!
答案 0 :(得分:1)
您可以使用ParquetWriter
标志来检查范围是否被破坏。