带有数组的for循环中的Javascript延迟

带有数组的for循环中的Javascript延迟,javascript,arrays,for-loop,delay,Javascript,Arrays,For Loop,Delay,嘿,伙计们,我被难住了,我有这段代码。它从google sheets中获取一些数据并将其放入一个数组中。更具体地说,它需要一个地址和金额。它可以在数组中生成一个小数组。然后我得到阵列并循环通过它,但我希望它在下一个阵列之前暂停10秒。这就是我所拥有的: const randomArray = []; for (var i = 0; i < rows.length; ++i) { let

嘿,伙计们,我被难住了,我有这段代码。它从google sheets中获取一些数据并将其放入一个数组中。更具体地说,它需要一个地址和金额。它可以在数组中生成一个小数组。然后我得到阵列并循环通过它,但我希望它在下一个阵列之前暂停10秒。这就是我所拥有的:

                const randomArray = [];
                for (var i = 0; i < rows.length; ++i) {
                    let row = rows[i];
                    randomArray.push(row);
                }
     for (const data of randomArray) {
                    setTimeout(() => {
                        const AddressID = data[0];
                        const Amount = parseFloat(data[1]);
                        console.log(AddressID, Amount);
                    }, 5 * 1000);
                }
            }
const randomArray=[];
对于(变量i=0;i{
const AddressID=数据[0];
const Amount=parseFloat(数据[1]);
控制台日志(地址ID、金额);
}, 5 * 1000);
}
}
总共有4个地址和4个金额。我需要它做(地址,数量)停止10秒,再做一次,直到它到达最后一个。我所做的等待了5秒钟,然后一次就吐出了所有4个地址和金额。

  • 使用
    setTimeout
    代替
    setInterval
  • 在数组上循环,并根据索引设置适当的间隔以等待回调的执行(即延迟
    i*10000
    而不是
    5*1000
    ,其中
    i
    是数组中的当前索引)
  • 使用普通for循环,因为当执行回调时,循环将完成,索引变量将不包含正确的值
演示

let randomArray=[[1,10]、[2,20]、[3,30]、[4,40];
randomArray.map((el,i)=>{
设置超时(()=>{
const AddressID=el[0];
const Amount=parseFloat(el[1]);
控制台日志(地址ID、金额);
},i*10000);

});
关键是使用正常的
for
循环,而不是
for
循环,这样可以获得数组的索引:

const randomArray = [];
  for (var i = 0; i < rows.length; ++i) {
    let row = rows[i];
    randomArray.push(row);
  }
 for (var j = 0; j < randomArray.length; j++) {
        var data = [randomArray[j]];
    setTimeOut(() => { console.log("Delay")}, j * 5000);
    const AddressID = data[0];
    const Amount = parseFloat(data[1]);
    console.log(AddressID, Amount);
    }
const randomArray=[];
对于(变量i=0;i{console.log(“Delay”)},j*5000);
const AddressID=数据[0];
const Amount=parseFloat(数据[1]);
控制台日志(地址ID、金额);
}

这应该每五秒钟发射一次,只要把5000换成你喜欢的

可能重复的Hey man感谢您的回复我输入了错误的代码snippit我现在更改了它。我想告诉你,我不能让行,因为有些表文档有100+地址和金额。这只是一个测试。