React的承诺:如何将数组转换为json

时间:2019-06-18 08:42:59

标签: reactjs api react-native

我有一个列表,这些列表是从我存储在数组中的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()
        // }));

1 个答案:

答案 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 */})