需要在JavaScript中重复setTimeout()部分30次



我不太擅长Javascript,但我认为"setTimeout";将它的函数放在堆栈上,以便稍后执行(该堆栈在该给定块代码中的所有代码首先执行之后开始(。

  1. 首先,我需要等待所有的"setTimeout";功能来完成他们的工作。我也有内在的";setTimeout";函数(如示例中所示(。。。不要关注这个写块的质量
  2. 在整个代码块完成它的工作后,我需要再次重复整个给定的块30次。这个块中的第一个命令是重置图形,然后我需要从头开始重新绘制这些对象,并连续30次这样做

我该怎么做?"对于";命令不会在那里帮助我,因为";setTimeout";功能。

// Reset elements before processing
$('.myClass').remove();
// Fill 'myArray' with elements...
// Iterate through array
for (let i = 0; i < myArray.length; i++) 
{
const time = 800;
setTimeout(function(){ myFunction(myArray[i], param1, time, param2, param3) }, i * time)                
}
function myFunction(myArrayElement, param1, time, param2, param3) 
{
// Some logic...

// Define timeStep
const timeStep = 20;

// Inner iteration
for (let i = 1; i < 50; i++) 
{
doSomething(i);
}

function doSomething(i) 
{
setTimeout(function() 
{
// Some inner logic...
}, timeStep * i);
}
}

基于https://stackoverflow.com/users/14666679/ramanan-kalirajan

const myFunction = () => console.log('MyFunction was called');
const repeat = (func, times) => {
func();
if (times >= 2) {
setTimeout(() => repeat(func, times - 1));
}
};
repeat(myFunction, 30);

setTimeout不会帮助您。setTimeout就像给要执行的函数或代码添加一个延迟。最好的方法是尝试递归。通过发送次数作为方法的输入,可以使用递归。

最新更新