我有一个列表,这些列表是从我存储在数组中的API获取的。我想将数组转换为JSON数据,以便可以访问对象并将它们存储在状态变量中。
我尝试通过promise手动获取,并且可以正常工作,但是当我将所有内容放入数组中时,它不会让我将其转换为JSON。
componentDidMount(){
let allArticles = [];
for (let i=10; i>1; i--){
allArticles.push(fetch(BASE_URL + '&page=' + i));
}
Promise.all(allArticles)
.then(responses => {
console.log(responses);
const processedResponses = [];
responses.map(response => {
processedResponses.push(response);
})
//console.log(processedResponses);
})
//this works
// Promise.all([
// fetch(BASE_URL + '&page=10'),
// fetch(BASE_URL + '&page=9')
// ])
// .then(([response1, response2]) => Promise.all([response1.json(), response2.json()]))
// .then(([data1, data2]) => this.setState({
// loading: false,
// dataSource: data1.articles.reverse()
// }));
答案 0 :(得分:2)
只需为每个项目做
for (let i=10; i>1; i--){
allArticles.push(fetch(BASE_URL + '&page=' + i).then(res => res.json()));
}
Promise.all(allArticles)
.then(articles => { /* Array of parsed responses here */})
否则,您需要再次使用Promise.all
for (let i=10; i>1; i--){
allArticles.push(fetch(BASE_URL + '&page=' + i));
}
Promise.all(allArticles)
.then(responses => Promise.all(responses.map(res => res.json())))
.then(articles => { /* Array of parsed responses here */})