在 JavaScript 中分块 HTTP 请求

问题描述

我正在尝试从在线来源获取数据并将其存储在本地。我需要发出几千个 HTTP 请求,所以希望将它们分块。我创建了以下代码来创建日期范围,为每个 HTTP 请求生成一个 Promise,然后将这些 Promise 分成 30 个数组。

我发现很难在心理上解决如何确保这些 Promise 中的每一个都被串行调用。我更愿意使用我已经开发的代码解决解决方案,因为我相信它主要在那里,我只是需要帮助在精神上解决问题/朝着正确的方向推动。

const blockAPI = `https://chain.api.btc.com/v3/block/date/`;

let enumerateDates = (startDate,endDate) => {
  let date = [];
  while(moment(startDate) <= moment(endDate)) {
    date.push(moment(startDate).format('YYYYMMDD'));
    startDate = moment(startDate).add(1,'days').format('YYYYMMDD');
  }
  return date;
}

let promiseGenerator = (req) => {
    return new Promise((resolve,reject) => {
    fetch(req,{
      method : 'GET',headers: { 'Content-Type': 'application/json;charset=UTF-8' }
    }).then(blob => { resolve(blob.json()); });
  })
}

let chunkGenerator = (arr,chunkSize) => {
  let chunkedArray = [];
  for (var i= 0; i < arr.length; i += chunkSize) {
    chunkedArray.push(arr.slice(i,i + chunkSize));
  }
  return chunkedArray;
}

let dateArr = enumerateDates('2009-01-03','2010-01-01');
let promiseArray = [];

dateArr.map(date => promiseArray.push(promiseGenerator(`${blockAPI}${date}`)));

let chunkedArray = chunkGenerator(promiseArray,30);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)