Ты просто там. Проблема в том, что ваш первый then
возвращает массив обещаний . К сожалению, цепочки обещаний работают только с экземпляром Promise
, поэтому здесь нет ничего, что могло бы дождаться разрешения ваших обещаний.
Быстрое решение состоит в том, чтобы изменить первое then
на
return Promise.all(responses.map(r => r.json()))
При этом, API fetch
немного больше, особенно для обработки ошибок.
Я бы использовал что-то вроде следующего для каждого вызова fetch
, чтобы убедиться, что сетевые ошибки и неуспешные HTTP-запросы обрабатываются правильно.
Это также будет обрабатывать развертывание ответа JSON, поэтому вам не нужно будет использовать приведенный выше
Promise.all([
fetch(url1).then(res => res.ok && res.json() || Promise.reject(res)),
fetch(url2).then(res => res.ok && res.json() || Promise.reject(res))
]).then(data => {
// handle data array here
})
См. https://developer.mozilla.org/en-US/docs/Web/API/Response/ok