当我们在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/