javascript - 如何在 forEach 循环后填充数组

标签 javascript arrays foreach es6-promise

const tileApiPromises = [];
 response.data.forEach((tile) => {
     return getPartnerToken(tile.id).then((response) => {
         tileApiPromises.push(getTileContent(tile, response));
     });
 });
 console.log(tileApiPromises) // should give me an array of promises
 Promise.all(tileApiPromises) // The goal is to execute this.

我当然在日志中得到空数组。如何在 forEach 之外获得带有 Promise 的数组。感谢您的帮助!

最佳答案

您的代码的问题是推送是异步完成的 - 因此,数组中还没有任何内容!

你说你尝试过 map (在评论中) - 你尝试过这样吗?

const tileApiPromises = response.data.map((tile) => {
     return getPartnerToken(tile.id).then((response) => {
         return getTileContent(tile, response);
     });
 });

或者,更性感

const tileApiPromises = response.data.map(tile => 
    getPartnerToken(tile.id).then(response => getTileContent(tile, response))
);

关于javascript - 如何在 forEach 循环后填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42435874/

相关文章:

php - 对 foreach 循环结果进行排序

Javascript 变量 - 设置为百分比

javascript - 使用 Javascript 查找和修改数组中对象的最佳方法是什么?

javascript - 在为下一个成员运行循环之前完成任务

arrays - 检查字典中的数组并返回 UIImage 但它返回相同图像的两倍

c# - 如果缓冲区太小,是否可以防止异常?

php - Laravel- 在 Markdown 邮件中使用@foreach

javascript - 使用回调函数和异步请求时避免重复

javascript - 如何从图表js中的图表中删除轴线

javascript - "repeating"方法调用的奇怪 Javascript 语法