Как должен вызываться промежуточный результат, возвращаемый запросом на выборку? Капля или просто ответ? - PullRequest
0 голосов
/ 05 апреля 2020

когда мы используем fetch в JS для выдачи запроса на получение, мы обычно делаем что-то подобное

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

Однако я смотрел JS 30 курсов Уэса Босса, и он позвонил промежуточному результат, что выборка возвращает blob, как в

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

Я нашел определение для BLOB здесь https://developer.mozilla.org/en-US/docs/Web/API/Blob

Я недостаточно осведомлен, чтобы судить, Уэс Бос использовал здесь правильный термин, чтобы обозначить его как blob, и у меня нет возможности связаться с ним напрямую и спросить его. Надеюсь, я найду здесь ответы.

1 Ответ

3 голосов
/ 05 апреля 2020

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, чтобы избежать путаницы.

...