javascript - fetch请求返回的中间结果应该叫什么?一个 Blob 还是只是响应?

标签 javascript ecmascript-6 frontend

当我们在JS中使用fetch发出get请求时,通常会这样做

fetch(endpoint).then(res => res.json()).then(result => ...)

但是我正在观看 Wes Bos 的 JS 30 类(class),他将中间结果称为 fetch 返回一个 blob,如

fetch(endpoint).then(blob => blob.json()).then(result => ...)

我在这里找到了 blob 的定义 https://developer.mozilla.org/en-US/docs/Web/API/Blob

我的知识不足以判断 Wes Bos 是否在这里使用了正确的术语将其称为 blob,而且我无法直接联系他并询问他。希望我能在这里找到一些答案。

最佳答案

fetch 返回 Response对象,而不是Blob - 如果您尝试在结果上使用 .slice.stream 等 Blob 方法,则会引发错误,因为这些方法不存在。

// Not OK:
fetch('data:,Hello%2C%20World!').then(blob => blob.slice()).catch((err) => console.log('err', err.message));
// OK:
fetch('data:,Hello%2C%20World!').then(res => res.text()).then(console.log);

请注意,响应可以转换为 Blob,但 fetch 的返回值仍然是响应:

fetch(endpoint)
  .then(response => response.blob())
  .then((blob) => {
    // work with the blob here
  });

将响应称为 blob 是不正确的。它们有些相似,但又不一样。最好避免将其称为 blob 以避免混淆。

关于javascript - fetch请求返回的中间结果应该叫什么?一个 Blob 还是只是响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61035624/

相关文章:

javascript - Django : Ajax form still reloads the whole page

javascript - 在将文件上传到 S3 之前重命名文件

javascript - 揭示模块模式结合 ES6 模块

javascript - 如何编写在 "background"处无限期运行的代码

javascript - 更改对象内部对象数组的最佳方法(使用字符串路径)

javascript - 比较两个对象以创建一个新对象

javascript - 从集合中的对象中提取属性值?

javascript - 嵌套 HTML 元素上的 onKeyDown

css - 什么是 css 技术 Material 设计精简版(谷歌)实现的名称?

javascript - 检测表单字段中是否有 3 个或更多文本字符