fetch
возвращает объект Response
, а не Blob
- если вы попытаетесь использовать методы BLOB-объектов, такие как .slice
и .stream
для результата, ошибки будут выброшены, так как эти методы не существуют.
// 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
, чтобы избежать путаницы.