将Observable <Object>转换为User []

时间:2019-06-14 14:08:17

标签: angular6

我想将Observable转换为User []。

谷歌搜索后,我找到了一个解决方案,但转换仅在map内完成。

    users : User[] = [];

    this.userService.getUsersList() // Observable<Any>
          .map((listUsers: Array<any>) => {
           let result:Array<User> = [];
            if (listUsers) {
              listUsers.forEach((erg) => {
                result.push(new User(erg.id, erg.name, erg.username, erg.email, erg.password, erg.age, erg.active, erg.roles));
              });
            }
            console.log('----------------Size: ' + result.length);  // Output: 5 --> TRUE
            return result;
          })
          .subscribe(users => this.users = users);



     console.log('----------------Size: ' + result.length);        // Output: 0 --> FALSE

所以没关系,我可以得到map内User []数组的大小。 我的问题是,如何获取大小或在地图外读取数组User []。

谢谢。

1 个答案:

答案 0 :(得分:0)

尝试使用承诺

服务文件示例:

getList(id: number): Promise<any>
{
    return this.http.get(`${this.baseUrl}/../${id}`).toPromise();
}

然后在您的控制器上,尝试使用asyncwaitthen

请尝试参考this thread