2016-12-02 6 views
2

Finden Sie meinen Code unten.Wie verwenden Sie setInterval() innerhalb für Schleife

for (i= 0; i < region.length; i++) { 
 
        point = region[i]; 
 
        animation = setInterval(function() { 
 
        .......... 
 
        }, 12); 
 
       }

Ich möchte die Codes in setInterval auszuführen, bevor ich von 0 auf 1. Wert, aber zur Zeit schließlich der Ausführung nur für Schleife wird Codes in der setInterval Methode ausgeführt zu werden. Gibt es einen Weg, meine Anforderung zu erfüllen?

+0

@Rajesh Dank für Ihren Kommentar. Aber ich möchte die Codes innerhalb der Methode setInterval vor dem weiteren Inkrement von i-Wert in der for-Schleife ausführen. – Sanjith

+0

Entschuldigung für mein Missverständnis. – Rajesh

+0

Das könnte helfen: http://stackoverflow.com/questions/13583280/javascript-execute-async-function-one-by-one – Rajesh

Antwort

2

Verwendung Verschluss nach innen für Schleife:

(function(i) { 
    setInterval(function() { 
    console.log("inside setinterval" + i) 
    }, 10); 
})(i) 

Hoffnung dies Ihr Problem löst

+0

Es hilft mir sehr. Aber ich möchte den gleichen "i" -Wert beibehalten, bis ich die clearInterval() -Methode aufruft. Ist es möglich? – Sanjith

+0

wenn Sie clearinterval aufrufen möchten – pareshm

0

Async Schleife benötigen Sie:

var len = region.length; 
var i = 0; 
var animate = function(){ 
    setTimeout(function() { 
     point = region[i]; 
     //do something.......... 
     if (i++ < len) animate(); 
    }, 12); 
}; 
0

Sie sollten Rekursion für diese Anforderungen verwendet werden. Außerdem sollten Sie setTimeout verwenden, da setInterval für die Ewigkeit laufen wird (bis Seite besteht), bis Sie es löschen.

var i = 0; 
 
var MAX_COUNT = 10; 
 
function doSomething(str){ 
 
    console.log(str); 
 
    processData(); 
 
} 
 

 
function initSetTimeout(callback){ 
 
    setTimeout(callback, 1000) 
 
} 
 

 
function processData(){ 
 
    if(++i<MAX_COUNT) 
 
    initSetTimeout(doSomething.bind(null, i)) 
 
} 
 
processData()

Verwandte Themen