javascript - 如何使用 javascript fetch 获取部分内容?
问题描述
我想使用 javascript 从远程服务器获取降价文件的内容fetch
。在下载文件的全文之前,我想检查他们的前事以确定下载每个文件。一个示例降价文件如下:
---
author: foobar
---
very long text...
我知道我可以下载文件的全部内容,但我想获取内容的第一部分以减少网络负载。
如何下载markdown文件的部分?
解决方案
尽管我建议将元数据作为单独的资源提供,但您可以使用以下命令中止正在进行的提取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();
});
推荐阅读
- visual-studio-code - 如何不在 VS Code 侧边栏中对文件夹和文件进行分组,而是按字母顺序排列所有内容?
- python-3.x - 除零除错误外无法使用 try
- flutter - 是否可以在 NotificationListener 中检测 ScrollNotification 的来源
- angular - Angular 多个 .subscribe 用于
- assets - zipline:如何找到符号的 sid,例如“AAPL”
- c# - 使用 dot.net 客户端 SolaceSystems.Solclient.Messaging 缺少 libcrypto-1_1-x64.dll
- c# - 在同步代码中等待输入而不阻塞的最佳方法
- ruby - 红宝石:在heroku上使用credentials.yml.enc?
- mongodb - 查询 MongoDb 聚合连接两个集合
- laravel - Laravel - 在单个请求中处理大量小数据条目,总执行时间超过 2 分钟