асинхронная/ожидающая фильтрация ответа на ответную выборку

У меня есть ответ от моего сервера, например buildings : [record1, record2, ...], и я хочу получить только массив из этого ответа. Как я могу получить только массив из обещания? Я пробовал некоторые асинхронные/ожидающие вещи, но я не понял, как их использовать в этом коде:

setupImpagination() {
    ....
    fetch(pageOffset, pageSize, stats) {
        return fetch(`http://localhost:3000/api/building/all?skip=${pageOffset}&limit=${pageSize}`)
            .then(response => {
            console.log('response.json() => ',response.json());
            response.json()
            })
            .catch((error) => {
            console.error(error);
            });

    }
    });
}

person imalik8088    schedule 24.10.2017    source источник


Ответы (2)


.тогда путь

 fetch(pageOffset, pageSize, stats) {
        return fetch(`http://localhost:3000/api/building/all?skip=${pageOffset}&limit=${pageSize}`)
            .then(response => {
               console.log('response.json() => ',response.json());
               response.json()
            }).then(responseJson => {
               return responseJson.buildings
            }).catch((error) => {
               console.error(error);
            });

        }
    });

асинхронный/ожидающий способ:

 async fetch(pageOffset, pageSize, stats) {
       try {
           const response = await fetch(`http://localhost:3000/api/building/all?skip=${pageOffset}&limit=${pageSize}`);
           const responseJson = await response.json();
           return responseJson.buildings;
       } catch(error){
            console.error(error);
       }
person Alexander Vitanov    schedule 24.10.2017
comment
Отлично, спасибо за ответ, решение async/await сработало для меня. Мне пришлось добавить async перед fetch, тогда это сработало - person imalik8088; 25.10.2017

async function fetchData (url, { type = 'json' } = {}) {
  return await (await fetch(url))[type]();
}
// Example: 
(async () => {
  console.log(await fetchData('http://canskit.com', { type: 'text' }));
})();

Как и оригинальный js на ES7, не стремитесь к реактивной нативности

person Soul Clinic    schedule 16.09.2020