Javascript 使用多个es6映射并使其异步

Javascript 使用多个es6映射并使其异步,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,上面的代码无法工作,因为两者都同时运行?如何确保eventBarData完成处理,然后运行另一个映射?我必须把地图包在地图里吗?我不想在prepareEventBar函数中使用callback。HaveprepareEventBar返回一个。然后您可以使用: 或者,如果您的环境支持它,或者您使用的是transpiler,则可能会更干净一些: const eventBarDataPromises = data.map(obj => prepareEventBar(obj.calendar))

上面的代码无法工作,因为两者都同时运行?如何确保eventBarData完成处理,然后运行另一个映射?我必须把地图包在地图里吗?我不想在prepareEventBar函数中使用callback。

Have
prepareEventBar
返回一个。然后您可以使用:

或者,如果您的环境支持它,或者您使用的是transpiler,则可能会更干净一些:

const eventBarDataPromises = data.map(obj => prepareEventBar(obj.calendar))

Promise.all(eventBarDataPromises)
  .then(eventBarData => eventBarData.map(obj => ...))
  .then(mapToSpaceData => ...

地图已经同步了,如何回报承诺?最好阅读
const eventBarDataPromises = data.map(obj => prepareEventBar(obj.calendar))

Promise.all(eventBarDataPromises)
  .then(eventBarData => eventBarData.map(obj => ...))
  .then(mapToSpaceData => ...
// this code must be wrapped in an async function
const eventBarData = await Promise.all(
  data.map(obj => prepareEventBar(obj.calendar))
);

const mapToSpaceData = eventBarData.map(obj => ...);