JavaScript 数组卡在待处理状态

时间:2021-07-21 19:19:53

标签: javascript

我遇到了 JavaScript 数组卡在待处理状态的问题。是不是请求太多了?

const removeBots = async(arr) => {
  try {
    for (let i = 0; i < arr.length; i++) {
      console.log(i)
      axios.get(`https://api.etherscan.io/api?module=account&action=txlist&address=${arr[i]}&apikey=${apiKey}`)
        .then(res => console.log(res.data.result.length))
    }
    console.log("Done");
    console.log(walletsFinal);
  } catch (e) {
    console.log("error", e)
  }
}

编辑 - 我注意到反引号的格式问题并修复了它。我正在尝试解决 API 每秒调用 5 次的速率限制的问题。

1 个答案:

答案 0 :(得分:0)

如果您的问题是您的速率限制为 5 个 api 调用/秒,那么只需在每次调用之间等待 200 毫秒(250 毫秒是安全的)。

// https://stackoverflow.com/a/39914235/12101554
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));

const removeBots = async(arr) => {
  try {
    for (let i = 0; i < arr.length; i++) {
      console.log(i)
      const res = await axios.get(`https://api.etherscan.io/api?module=account&action=txlist&address=${arr[i]}&apikey=${apiKey}`);
      console.log(res.data.result.length);
      await sleep(250);
    }
    console.log("Done");
    console.log(walletsFinal);
  } catch (e) {
    console.log("error", e)
  }
}