const eventBarData = data.map(obj => prepareEventBar(obj.calendar))
const mapToSpaceData = eventBarData.map(obj => ({
space_name: obj.space.display.name,
...obj
}))
上面的代码不起作用,因为两者同时运行?如何确保 eventBarData 完成处理然后运行另一个 map ?我必须将 map 包裹在 map 中吗?我不想在prepareEventBar函数中使用回调。
最佳答案
让prepareEventBar
返回Promise 。那么你可以使用 Promise.all
:
const eventBarDataPromises = data.map(obj => prepareEventBar(obj.calendar))
Promise.all(eventBarDataPromises)
.then(eventBarData => eventBarData.map(obj => ...))
.then(mapToSpaceData => ...
或者,如果您的环境支持它或者您正在使用转译器,则 async
function可能会更干净一些:
// 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 => ...);
关于javascript - 使用多个 es6 映射并使其异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44451356/