我有一个单独的骨干视图:
TestView = Backbone.View.extend({
initialize : function(){
_.each(array,function(arrayElement){
//-do something
});
};
})
return TestView()
问题是我想重用这个视图,但有时候'每个'循环迭代的数组非常大,所以当我切换视图并重新输入(重用)这个视图时,前面的每个循环仍然是运行。有没有办法可以在切换视图时停止已经执行的每个循环?
答案 0 :(得分:1)
我不这么认为,因为_.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);
}
}
答案 1 :(得分:1)
您可以使用_.every()
代替_.each()
。请务必返回true
或false
以指示是否继续循环。
initialize : function(){
_.every(array,function(arrayElement){
//-do something
if (shouldIContinue) {
return true;
} else {
return false;
}
});