首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript中包含n步的异步程序

javascript中包含n步的异步程序
EN

Stack Overflow用户
提问于 2018-11-18 07:15:28
回答 2查看 1.3K关注 0票数 2

如果我运行这个,我会得到1,2,…,50在我的控制台。

代码语言:javascript
复制
keys = [1, 2, 3, ..., 50];
async.forEach(keys, function (key, callback){
    console.log(key);
    callback();
}

但我想第三步。我想得到: 1,4,7,……像这样的循环:

代码语言:javascript
复制
for (let key = 1; key <= 50; key = key + 3) {

}

如何使用异步实现这一目标?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-18 07:36:40

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等.

因此,您可以在代码中使用如下所示:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2018-11-18 07:24:31

我不知道async.forEach是什么,但假设您只是尝试用3步完成一个正常的forEach,下面是我的方法:

forEach并不适合在您操作索引的情况下(特别是在更硬的情况下,您的索引可能在循环中发生变化),但作为一种快速攻击,您可以执行以下操作:

代码语言:javascript
复制
keys.forEach((key, index) => {
  if(index % 3 === 0) {
  // Only true when it's a multiple of 3
  // Do your loop body
  } 
});

注意,forEach接受回调(第一个参数是当前值)和可选参数(其中包括当前索引),请参见文档

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53358688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档