2016-07-07 3 views
1
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); 
     } 
    } 

Aufruf Plotly addTraces wirft einen Fehler aufgrund unsyncroniced Zählers „c“: enter image description heresetTimeout Position im Code Winkel hack?

Ohne die Timeout keine Fehler, aber Spuren werden nicht in der Sicht bis zum Ende des Schleifen reflektieren. Ich möchte sehen, dass die Spuren nacheinander für große Daten zeichnen, die langsam sein können, so dass mindestens c etwas ändern, wie Code läuft

Alle Vorschläge, nicht sicher, wo Sie von hier aus gehen!

+0

http://community.plot.ly/t/update-view-after-every-iteration-plotly-js- addtraces-loop/1479/5 –

+0

hast du '$ timeout()' ausprobiert? – theaccordance

+0

nicht hier, ich werde es versuchen –

Antwort

0

ein foreach verwenden, anstatt für Schleife irgendwie das Problem gelöst ,,,

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

Das ist mehr als nur eine Änderung an 'forEach'; Das ist ein völlig anderer Code. Es scheint offensichtlich, dass Sie etwas aus Ihrer ursprünglichen Frage herausgelassen haben. –

+0

@MikeMcCaughan Ja, Sie haben Recht, ich habe den ursprünglichen Beitrag bearbeitet, um den ursprünglichen Fehler/Code wiederzugeben –