Я получаю API, который возвращает json, но когда он имеет ошибку, он возвращает только текст (В узле с экспрессом результаты возвращаются с .json({})
и ошибками с .send('string')
), но Я не могу изменить API
Так что я пытаюсь сделать что-то, что читает json, но если это текст, он войдет в .catch
, где ошибка - текст.
Вот то, что я пытался, но безуспешно.
fetch(apiUrl)
.then(res => {
try {
let json = res.json()
return json
} catch (error) {
return new Promise((resolve, reject) => reject(res.text()))
}
})
.then(res => {
// get result from res.json() **res == res.json**
})
.catch(error => {
// get result from res.text() **res == res.text**
})
Как мне этого добиться?Как получить res.json()
в следующем .then()
, но в случае неудачи получить res.text()
в .catch
?
Редактировать:
Я хочу получить .text
в.catch
.Я не знаю почему, но бросание res.text()
не работает.