React Native异步请求过滤响应

4

我的服务器返回了像buildings : [record1, record2, ...]这样的响应,我只想从中获取数组。我该如何从Promise中获取只有数组的结果?我尝试过一些async/await的方法,但不知道如何在这段代码中使用:

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);
            });

    }
    });
}
2个回答

16

然后的方式

 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/await的方式:

 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);
       }

太好了,感谢您的回复,async/await 的解决方案对我很有帮助。我必须在 fetch 前面加上 async,然后它就有效了。 - imalik8088

0
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,不针对react-native


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接