返回由promise.all()填充的数组

时间:2018-11-15 10:56:18

标签: javascript reactjs

我已经使用api调用以及Promise.all构建了数组“ newPlanets”

export function api_calling(){
  var newPlanets = [];
  const URLs = fetching() // function that returns an array of fetches
  Promise.all(URLs).then(data => {
    // push all "results" field into newPlanets
    for (var i = 0; i < 7; i++) {
      for (var n = 0; n < 10; n++) {
        newPlanets.push(data[i].results[n]);
      }
    }
  })
  return newPlanets;
}

但是,当将其返回到另一个调用它的函数时:

class App extends Component {
  constructor(props){
    let data = api_calling()
    console.log(data)
    super(props);
  }
}

控制台显示一个空数组。我如何能够将构造的数组返回到我的组件中?

1 个答案:

答案 0 :(得分:0)

promise将异步解析,因此您不能在构造函数中编写return str.replace(/\n/g, "<br />");

您可以改为从let data = api_calling()返回Promise.all的结果,并在api_calling中解析组件时设置组件状态。

示例

componentDidMount