微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 JavaScript 中分块 HTTP 请求

如何解决在 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 举报,一经查实,本站将立刻删除。