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/

相关文章:

javascript - 在 CoffeeScript 中设置 innerHTML

javascript - 大整数到字节数组 JavaScript

c# - 如果集合为空,为什么 foreach 会抛出异常

java - 根据另一个列表中的条件删除一个列表中的某些元素

javascript - 我想通过单击文本 ID 来阅读

javascript - jQuery:检查元素是否已分配给 var

javascript - D3 select multiple tag- 提取值

arrays - 从 Swift 中的数组值中获取第一个字符

java - 将 BitSet 转换为 Byte[]

swift - 如何动画移除使用 ForEach 循环创建的 View 从 SwiftUI 中的 ObservableObject 获取其数据