带有setTimeout和重新创建forEach的异步JavaScript质询问题

带有setTimeout和重新创建forEach的异步JavaScript质询问题,javascript,asynchronous,foreach,settimeout,csx,Javascript,Asynchronous,Foreach,Settimeout,Csx,请帮忙!我一直想靠自己解决这个问题,但一直碰壁 重新创建内置的数组方法forEach-编写一个函数,该函数以数组arr和回调函数cb作为参数。forEach函数将遍历arr,并将每个元素及其索引作为参数传递给cb。 创建一个名为delays的变量,并为其分配一个数字为200、500、0和350(按顺序)的数组。 编写一个函数delayLog,它将delayTime和索引i作为输入。调用时,函数应该等待delayTime毫秒,然后登录到控制台“printing element i”(用传入的实际索

请帮忙!我一直想靠自己解决这个问题,但一直碰壁

重新创建内置的数组方法forEach-编写一个函数,该函数以数组arr和回调函数cb作为参数。forEach函数将遍历arr,并将每个元素及其索引作为参数传递给cb。 创建一个名为delays的变量,并为其分配一个数字为200、500、0和350(按顺序)的数组。 编写一个函数delayLog,它将delayTime和索引i作为输入。调用时,函数应该等待delayTime毫秒,然后登录到控制台“printing element i”(用传入的实际索引替换“i”)。 总之,使用您创建的forEach函数对延迟数组的每个项运行delayLog函数

这就是我目前所拥有的。不太确定在哪里应用setTimeout。谢谢

function forEach(array,cb){
  for(let i=0;i<array.length;i++){
    console.log("printing element",i)
  }
}

let delays=[200,500,0,350];

function delayLog(delayTime,cb){
setTimeout(forEach(delayTime),cb);
}

delayLog(delays,i=>i)
以下是您想要的:

函数forEach(arr,cb){
对于(设i=0,l=arr.length;i{
cb(i);
},arr[i]);
}
}
函数延迟日志(i){
控制台日志('打印元件'+i);
}
forEach([200500,0350],delayLog)
函数forEach(arr、cb){
for(设i=0;i{
log(`printing element${i}`)
},延迟时间);
}
forEach(延迟、延迟日志);

这是训练营准备练习。没有老师,也没有人可以问。问题是要求重新创建forEach函数,而不是使用forEach数组方法。谢谢你的快速回复这太完美了。谢谢你的帮助。我会仔细检查你的解决方案,以确保我明白。
printing element 0
app.js:330 printing element 1
app.js:330 printing element 2
app.js:330 printing element 3
function forEach(arr, cb){
  for(let i = 0; i < arr.length; i++){
    cb(arr[i], i);
  }
}

 delays = [200, 500, 0, 350];

function delayLog(delayTime, i){
  setTimeout(() => {
    console.log(`printing element ${i}`)
  }, delayTime);
}

forEach(delays, delayLog);