代码角度hack中的setTimeout位置?

时间:2016-07-07 18:28:30

标签: javascript angularjs plotly

    for(c=0; c < $scope.graphPlotsChunk.length; c++ ){
      if(c == 0){
           Plotly.newPlot(graphRender, [$scope.graphPlots2[c]], $scope.layout2);
      }else{   
           setTimeout(function() { 
              $scope.testCounter.push(_.clone(c));
              console.log($scope.testCounter);
              Plotly.addTraces(graphRender, $scope.graphPlots2[c]);
           },0);
      }
    }

调用Plotly addTraces会因为未同步的计数器而引发错误&#34; c&#34;: enter image description here

没有超时没有错误但是跟踪不会反映在视图中直到循环结束。我希望看到大数据绘制的痕迹一个接一个地出现,这可能很慢,所以至少在代码运行时会发生一些变化

有任何建议,不知道从哪里开始!

1 个答案:

答案 0 :(得分:0)

使用foreach而不是for循环以某种方式解决了问题,,,

$scope.graphPlots2.forEach(function(trace, i) {
    if (i == 0) {
        Plotly.newPlot('graphRender', [trace], $scope.layout2);
    } else {
        setTimeout(function() {
            Plotly.addTraces('graphRender', trace);
        }, 0);
    }
});