[英]Backbone.js breaking the each loop while switching view
我有一个单例骨干视图:
TestView = Backbone.View.extend({
initialize : function(){
_.each(array,function(arrayElement){
//-do something
});
};
})
return TestView()
问题是我想重用此视图,但有时“每个”循环在其上迭代的数组很大,因此当我切换视图并重新输入(重用)此视图时,先前的每个循环仍在运行。 有没有一种方法可以在切换视图时停止已经执行的每个循环?
我不这么认为,因为_.each
是同步操作,并且您无法通过任何标志或任何方式对其进行控制。.我建议您使用带有偏移量的递归setTimeout
(只是使其异步且非阻塞)几毫秒的时间,也许您将能够中断执行。
var arr = [1,2,3];
function asyncEach(elementsArray) {
var element;
if (globalFlag) {
element = elementsArray.shift();
// do something with element
setTimeout(function () {
asyncEach(elementsArray);
}, 10);
}
}
您可以使用_.every()
代替_.each()
。 只需确保返回true
或false
即可指示是否继续循环。
initialize : function(){
_.every(array,function(arrayElement){
//-do something
if (shouldIContinue) {
return true;
} else {
return false;
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.