2016-12-02 266 views
2

請在下面找到我的代碼。如何在循環中使用setInterval()

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

我想執行中的setInterval代碼之前,我的價值從0到1,但目前對於僅環,結果收到了執行中的setInterval方法的代碼全部執行後的變化。有什麼辦法可以達到我的要求嗎?裏面

+0

@Rajesh感謝您的評論。但是我想在for循環中進一步增加i值之前執行setInterval方法內的代碼。 – Sanjith

+0

對我的誤解表示歉意。 – Rajesh

+0

這可能有所幫助:http://stackoverflow.com/questions/13583280/javascript-execute-async-function-one-by-one – Rajesh

回答

2

使用封閉的for循環:

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

希望這能解決你的問題

+0

它可以幫助我很多。但我想保持相同的「我」值,直到調用clearInterval()方法。可能嗎? – Sanjith

+0

當你想調用clearinterval – pareshm

0

異步循環,你需要:

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

您應該使用遞歸這樣的要求。此外,您應該使用setTimeout,因爲setInterval將運行永恆(,直到頁面存在),直到您清除它。

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()