Задать вопрос
Elena0394
@Elena0394

Как сделать, чтоб Promise.reject(res.text()) возвращал текст, а не [object promise]?

При таком коде
.then(res => res.ok ? res.json() : Promise.reject(res.text()))

возвращается [object promise], чтоб возвращался текст ошибки, мне приходится делать так:
.then(res => res.ok ? res.json() : res.text())
.then(res => if (res !== undefined) return Promise.reject(res))
.catch(e => `Ошибка: ${e}`);

скажите, а по другому нельзя сделать?
И еще такой вопрос:
.then(res => res.json())
.then(res => res.users)

почему нельзя сразу возвратить users, вот так?
.then(res => res.json().users)
  • Вопрос задан
  • 214 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
ruddy22
@ruddy22
Спасение утопающих — дело рук самих утопающих
При таком коде
.then(res => res.ok ? res.json() : Promise.reject(res.text()))


ответ дал вам в предыдущем вопросе вместе с примером

И еще такой вопрос:
.then(res => res.json())
.then(res => res.users)

почему нельзя сразу возвратить users, вот так?
.then(res => res.json().users)


Потому что такова спецификация метода
Body.json()
Takes a Response stream and reads it to completion. It returns a promise that resolves with the result of parsing the body text as JSON, which is a JavaScript value of datatype object, string, etc.

https://developer.mozilla.org/ru/docs/Web/API/Body/json
Ответ написан
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
zkrvndm
@zkrvndm
Архитектор решений
Перепишите ваш код с использованием async / await и тогда вместо промисов сможете получать сразу результат.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы