有一个包含本地数组和循环的函数 以某种方式改变那些数组。函数返回 一个数组。示例如下:
function myFunc(expr) {
var array1 = [],
array2 = [];
for (var i = 0; i < expr.length; ++i) {
// ...
}
return array2;
};
我需要在每个循环步骤后在画布上画一个带DELAY的数组。
我的第一个想法是使用某种&#34;睡眠&#34;功能在循环结束时,但Google告诉我JS没有这种类型的功能。我不完全明白&#34; setInterval&#34;函数,但据我所知,这将执行即使我的外部函数(myFunc)将停止,由于这个外部函数将不会返回&#34; array2&#34;。
答案 0 :(得分:0)
如果我理解正确,你希望循环“暂停”,同时执行一些功能,在循环内部可以使用数据,然后执行一个功能。当你说“for each loop step”时,我假设它适用于for循环中的每一步。
function myFunc(expr) {
var array1 = [],
array2 = [];
for (var i = 0; i < expr.length; ++i) {
// ...
// Perform something here after a certain time, while the loop waits.
}
return array2;
};
据我所知,你无法完全达到这个目的,但是,如果你有可用的数据,你可以“伪造”你想要的行为。
请参阅我创建示例的jsfiddle。
function myFunc(expr) {
var array1 = [],
array2 = [];
for (var i = 0; i < expr.length; ++i) {
// ...
setTimeout(function(){
// Do whatever you want to do.
}, i*500); // i = 0 is instantly, i = 1 is after 0.5s, i=2 is 1s, and so on...
}
return array2;
};
您的(估计)时间线将从for循环开始时开始如下。
0s -> function in timeout when i = 0 is called
0.5s -> function in timeout when i = 1 is called
1.0s -> function in timeout when i = 2 is called
请注意,超时不准确,并且在执行功能之前可能存在偏差。
如果修改在函数内部使用的变量,请注意范围问题。
我希望这有帮助!