javascript 中的异步 foreach,步长为 n
Async foreach in javascript with step of n
如果我 运行 这个,我会在我的控制台中得到 1, 2, ..., 50。
keys = [1, 2, 3, ..., 50];
async.forEach(keys, function (key, callback){
console.log(key);
callback();
}
但我想要步长为 3。我想得到:1, 4, 7, ...
像这样的循环:
for (let key = 1; key <= 50; key = key + 3) {
}
如何使用异步实现此目的?
我不确定 async.forEach
是什么,但假设您只是想像您所说的那样通过 3 个步骤进行正常的 forEach
,这是我的方法:
forEach
不太适合您操作索引的用法(特别是在更硬核的情况下,您的索引可能会在循环中发生变化),但作为快速破解,您可以执行以下操作:
keys.forEach((key, index) => {
if(index % 3 === 0) {
// Only true when it's a multiple of 3
// Do your loop body
}
});
注意forEach
带回调,第一个参数是当前值,可选参数(其中有当前索引),见docs
const res = keys.reduce((acc, elem, i) => i % 3 == 0 ? [...acc, elem] : acc, []);
将为您提供 res
的结果:
[1, 4, 7, 10, 13, ..., 48]; // Every 3rd index
其中 i % 3
控制步骤。所以,如果你想每次增加 4,你可以将其更改为 i % 4
等...
因此,您可以像这样在代码中使用它:
keys = [1, 2, 3, ..., 50];
let stepKeys = keys.reduce((acc, elem, i) => i % 3 == 0 ? [...acc, elem] : acc, []);
async.forEach(stepKeys, function (key, callback){
console.log(key);
callback();
}
如果我 运行 这个,我会在我的控制台中得到 1, 2, ..., 50。
keys = [1, 2, 3, ..., 50];
async.forEach(keys, function (key, callback){
console.log(key);
callback();
}
但我想要步长为 3。我想得到:1, 4, 7, ... 像这样的循环:
for (let key = 1; key <= 50; key = key + 3) {
}
如何使用异步实现此目的?
我不确定 async.forEach
是什么,但假设您只是想像您所说的那样通过 3 个步骤进行正常的 forEach
,这是我的方法:
forEach
不太适合您操作索引的用法(特别是在更硬核的情况下,您的索引可能会在循环中发生变化),但作为快速破解,您可以执行以下操作:
keys.forEach((key, index) => {
if(index % 3 === 0) {
// Only true when it's a multiple of 3
// Do your loop body
}
});
注意forEach
带回调,第一个参数是当前值,可选参数(其中有当前索引),见docs
const res = keys.reduce((acc, elem, i) => i % 3 == 0 ? [...acc, elem] : acc, []);
将为您提供 res
的结果:
[1, 4, 7, 10, 13, ..., 48]; // Every 3rd index
其中 i % 3
控制步骤。所以,如果你想每次增加 4,你可以将其更改为 i % 4
等...
因此,您可以像这样在代码中使用它:
keys = [1, 2, 3, ..., 50];
let stepKeys = keys.reduce((acc, elem, i) => i % 3 == 0 ? [...acc, elem] : acc, []);
async.forEach(stepKeys, function (key, callback){
console.log(key);
callback();
}