Backbone.js在切换视图时打破了每个循环

时间:2014-06-19 14:17:49

标签: javascript backbone.js underscore.js

我有一个单独的骨干视图:

 TestView = Backbone.View.extend({
           initialize : function(){
            _.each(array,function(arrayElement){
               //-do something     
          });
       };

})
return TestView()

问题是我想重用这个视图,但有时候'每个'循环迭代的数组非常大,所以当我切换视图并重新输入(重用)这个视图时,前面的每个循环仍然是运行。有没有办法可以在切换视图时停止已经执行的每个循环?

2 个答案:

答案 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()。请务必返回truefalse以指示是否继续循环。

      initialize : function(){
        _.every(array,function(arrayElement){
           //-do something

           if (shouldIContinue) {
               return true;
           } else {
               return false;
           }
        });