繁体   English   中英

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

[英]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() 只需确保返回truefalse即可指示是否继续循环。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM