javascript - 当数组有元素时返回 Array[0] 的函数 | typescript /Javascript

标签 javascript arrays typescript

<分区>

我在使用 Typescript/Javascript 上的函数时遇到一些问题,我希望函数返回一个包含 X 元素的数组。

函数应该返回:

enter image description here

相反,我得到:

Sad Array

所以我不能使用任何数组方法,例如map。我不知道为什么当我在推送一个元素后立即登录时,数组是预期的格式 Array[X],但是当我在解析之前登录时我得到一个 Array[0]

这是函数:

public getUsers(object: any): Promise<Array<User>> {
let users: Array<User> = [];

return new Promise(resolve => {
  if (object) {
    object.map(userID => {
      this.getUserById(userID).then(user => {
        users.push(this.newResource(user));
        console.log('Right ->', users);
      });
    });
  }
  console.log('Wrong ->', users);
  resolve(users);
});
}

最佳答案

您正在记录并解决 before the asynchronous callback(s) runs并插入值(value)观。
还有 you are confused by the console .

由于您已经在使用 promises,因此解决方案很简单:

public getUsers(object: any): Promise<Array<User>> {
  if (object) {
    var p = Promise.all(object.map((userID, i) => {
      return this.getUserById(userID).then(user => {
        console.log('got user '+i, user);
        return this.newResource(user);
      })
    })).then(users => {
      console.log('Right: all done', users);
      return users;
    });
    console.log('Wrong: too early');
    return p;
  } else {
    return Promise.resolve([]);
  }
} 

关于javascript - 当数组有元素时返回 Array[0] 的函数 | typescript /Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41112637/

相关文章:

python - numpy - 转换具有不同 x 和 y 的二维数组?

php - in_array 未在数组中找到值

python - 快速获得 NumPy 数组反向的方法

reactjs - 如何处理在控制台中为 i18n 设置收到太多警告

javascript - 为什么我无法让 Progressbar.js 在 Jquery 中工作?

javascript - 使用 JavaScript/jQuery 将字符串分解为字符并将声音附加到每个字符

javascript - 在任何输入更改上发布表单,它包含动态更改的隐藏输入类型

HTML 中的 JavaScript : Getting undefined input value?

typescript - Firebase 不是构造函数

module - typescript 外部模块可以有循环依赖吗?