Skip to content

legado.http.batchGet

并发批量 GET 请求,一次发出多个请求并收集结果。适用于多页目录并发加载。

签名

js
legado.http.batchGet(urls, headers?, concurrency?) → BatchResult[]
参数类型必填说明
urlsstring[]URL 数组
headersobject共享的请求头
concurrencynumber并发数限制

返回值

BatchResult[] 数组,每个元素:

字段类型说明
urlstring请求的 URL
okboolean是否成功
datastring成功时的响应体
errorstring失败时的错误信息

示例

多页目录并发加载

js
function chapterList(tocUrl) {
  var html = legado.http.get(tocUrl);
  var doc = legado.dom.parse(html);

  // 提取所有分页 URL
  var pageUrls = legado.dom.selectAllAttrs(doc, 'select.page option', 'value');
  legado.dom.free(doc);

  // 并发请求
  var results = legado.http.batchGet(pageUrls);
  var chapters = [];
  for (var i = 0; i < results.length; i++) {
    if (results[i].ok) {
      var pageDoc = legado.dom.parse(results[i].data);
      var names = legado.dom.selectAllTexts(pageDoc, '.chapter a');
      var urls = legado.dom.selectAllAttrs(pageDoc, '.chapter a', 'href');
      for (var j = 0; j < names.length; j++) {
        chapters.push({ name: names[j], url: urls[j] });
      }
      legado.dom.free(pageDoc);
    }
  }
  return chapters;
}

基于 MIT 许可发布