[英]Javascript setInterval not making it into function
好的,我試圖將setInterval放入子函數中並且沒有使其進入那里...因此我的警報沒有觸發:
var doneVar= 0;
var groupsVar= 4;
var interval = setInterval(process_chunk, 1000);
var $myTree= $("#myTree");
var chunkLength = myArray.length / groupsVar;
process_chunk = function() {
alert("we are after chunk");
var arrayChunk = myArray.slice(doneVar*chunkLength, (doneVar + 1)*chunkLength);
//alert("we are in function!!");
$.each(arrayChunk, function(key, item){
$myTree.jstree("uncheck_node", "#"+item);
});
doneVar += 1;
if (doneVar === groupsVar) {
interval.clearInterval();
}
}
當您將其傳遞給setInterval時,尚未為process_chunk
分配值。 移動線:
var interval = setInterval(process_chunk, 1000);
在將匿名函數分配給process_chunk
之前(之后):
doneVar += 1;
或者,如果您要提升函數,請使用函數聲明而不是表達式:
function process_chunk() {
兩種版本都可以解決您的問題。
您需要在使用函數之前聲明該函數。
把process_chunk = function() { ... });
之前var interval = setInterval(process_chunk, 1000);
如果您僅在間隔內使用函數,請使用此方法(我的首選方法,您的方法沒有錯)
var doneVar= 0;
var groupsVar= 4;
var $myTree= $("#myTree");
var chunkLength = myArray.length / groupsVar;
var interval = setInterval(function() {
alert("we are after chunk");
var arrayChunk = myArray.slice(doneVar*chunkLength, (doneVar + 1)*chunkLength);
//alert("we are in function!!");
$.each(arrayChunk, function(key, item){
$myTree.jstree("uncheck_node", "#"+item);
});
doneVar += 1;
if (doneVar === groupsVar) {
interval.clearInterval();
}
},1000);
應該這樣做,以這種方式執行並在間隔內定義函數可以避免很多問題,例如在這種情況下,您需要先定義函數,然后再將其設置為間隔。 這是另一個保留您風格的版本。
var doneVar= 0;
var groupsVar= 4;
var $myTree= $("#myTree");
var chunkLength = myArray.length / groupsVar;
var process_chunk = function() {
alert("we are after chunk");
var arrayChunk = myArray.slice(doneVar*chunkLength, (doneVar + 1)*chunkLength);
//alert("we are in function!!");
$.each(arrayChunk, function(key, item){
$myTree.jstree("uncheck_node", "#"+item);
});
doneVar += 1;
if (doneVar === groupsVar) {
interval.clearInterval();
}
}
var interval = setInterval(process_chunk, 1000);
我想我剛才注意到的另一件事是,您使用process_chuck
而不是var process_chuck
witch也可能導致問題。 已在第二個答案中修復,不適用於第一個答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.