嘿伙计们我很难过,我有这段代码。从谷歌表中获取一些数据并将其放入数组中。更具体地说,它获取地址和金额。它比在阵列中创建一个小数组的数组。然后我得到数组并循环通过它我但我希望它在下一个数组之前暂停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);
}
}
总共有4个地址和4个金额。我需要它(地址,数量)停止10秒并再次执行直到它到达最后一个。我所做的等待5秒,然后只是一次性吐出所有4个地址和金额。
答案 0 :(得分:0)
setTimeout
代替setInterval
i * 10000
而不是5 * 1000
延迟,其中i
是数组中的当前索引)<强>演示强>
let randomArray = [[1,10], [2,20], [3,30], [4,40]];
randomArray.map((el,i) => {
setTimeout(() => {
const AddressID = el[0];
const Amount = parseFloat(el[1]);
console.log(AddressID, Amount);
}, i * 10000);
});
另一种方法是使用递归函数,每次执行前一个回调时都会创建一个新的超时,直到你遍历数组
<强>演示强>
let randomArray = [[1,10], [2,20], [3,30], [4,40]],
i = 0;
(function loop() {
setTimeout(() => {
const AddressID = randomArray[i][0];
const Amount = parseFloat(randomArray[i][1]);
console.log(AddressID, Amount);
i++;
if(i < randomArray.length)
loop();
}, i * 10000);
})();
答案 1 :(得分:-1)
关键是使用普通的for
循环代替你的of
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);
}
这应该每五秒开一次,只需将5000改为你喜欢的任何东西。