首页 > 解决方案 > 如何使用 javascript fetch 获取部分内容?

问题描述

我想使用 javascript 从远程服务器获取降价文件的内容fetch。在下载文件的全文之前,我想检查他们的前事以确定下载每个文件。一个示例降价文件如下:

---
author: foobar
---

very long text...

我知道我可以下载文件的全部内容,但我想获取内容的第一部分以减少网络负载。

如何下载markdown文件的部分?

标签: javascriptfetch

解决方案


尽管我建议将元数据作为单独的资源提供,但您可以使用以下命令中止正在进行的提取AbortController

const controller = new AbortController(),
signal = controller.signal;

fetch(url, {signal}).then(async resp => {
  const reader = resp.body.getReader();

  // Read the front matter. This example just reads 100 bytes.
  let bytesRead = 0;
  let result, data = [];
  while (true) {
    // Note: It is possible for `reader.read()` to return the whole file
    // if the HTTP response is not split among several TCP packets.
    result = await reader.read();
    if (result.done)
      break;
    
    data.push(result.value);
    bytesRead += result.value;
    if (bytesRead >= 100)
      break;
  }

  console.log(data);

  controller.abort();
});

推荐阅读