【问题标题】:JavaScript block loop logicJavaScript 块循环逻辑
【发布时间】:2020-10-10 17:22:55
【问题描述】:

我的代码有一个包含许多对象的数组,这些对象是 URL,我用它们创建了一个循环,该循环遍历该数组并对数组中的每个 url 发出请求。但是我需要我的循环以块的形式遍历数组,例如:每 10 个;直到你到达终点,所有这一切都是为了你不会立即执行它并最终导致服务器超载,并且因为数组非常大,所以从 1 到 1 不需要太长时间,代码库基本上就是这样。

const array = ["URL-1","URL-2","URL-3"] etc...

for (var i = 0; i < array.length; i++) {
    axios.get(array[i], (res) => {
        const res = res;
    });
}

【问题讨论】:

  • 你可以使用 setTimeout 吗?
  • 请求数量太大,无法一次完成,即使使用 setTimeout。我最终可能会收到错误 404
  • 如果你一次做 10 次,中间有一个超时时间?
  • 这是个问题,如何在每 10 个数组中每 10 个请求一次?
  • 先拆分数组? array.splice

标签: javascript node.js arrays logic


【解决方案1】:

大多数情况下都有更好的方法,但您可以尝试使用 setTimeOut 选项

let index = 0;
const maxIterations = 10;

function checkUrls() {

        for (var i = index; i < index + maxIterations; i++) {
            axios.get(array[i], (res) => {
            const res = res;
        }
        index += maxIterations;
        if (index >= array.length - maxIterations) {
            endOfArray = true;
            clearInterval(timer);
        }

}

const timer = setInterval(checkUrls, 10000);

或者类似的东西,希望有所帮助

【讨论】:

  • 我认为您没有很好地理解我的问题,在您的示例中,他将请求整个 10x 数组,我真正想要的是他只遍历我的数组一次,仅在块中10 中的 10。直到完成阵列。
  • 这就是我的代码正在尝试做的事情,每 10 秒它将一次遍历数组 10 个项目,直到它到达末尾
  • 这里,他请求 10,然后关闭它,而不是再请求 10
  • 我需要查看您当前的实施才能提供进一步的帮助
  • Print Screen result - 我创建了一个新项目来测试您的示例
猜你喜欢
  • 2014-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-05
  • 2019-01-08
  • 2012-03-25
相关资源
最近更新 更多