无法返回分配的值

时间:2019-05-18 14:34:56

标签: angular typescript

我有这样的功能;

getList() {
    this.http.get(this.rootURL )
    .toPromise().then(res => { this.mimeList = res as Mime[];
                               this.arrayLenght = this.mimeList.length;
    });
    return this.arrayLenght;
  }

在此函数中,我想返回mimeList数组的长度。变量arrayLength用于存储长度值,并在这样的类的主体中声明;

export class MimeService {
         .
         .
         .
         .
  arrayLenght = 0;
         .
         .
         .
         .
         .
         .
}

当我在console.log正文中放置this.http.get(this.rootURL ).toPromise().then语句时,它会打印出数组的实际长度。因此,这意味着检索此数组的长度没有问题。但是,在另一个我正在调用getList()函数的类中;

export class AssetListComponent implements OnInit {
             .
             .
             .
             .
             .
             .
ngOnInit() {
  this.service.getList();
  this.serviceCountry.getList();
  this.databaseLength = this.serviceMime.getList();
}
             .
             .
             .
             .
             .
             .
}

返回值是“ 0” ,而不是数组的实际长度。我在运行console.log(this.databaseLength)时可以看到这一点。

我哪里错了?我是Typescript的新手,很可能这个问题的答案很简单。预先感谢。

1 个答案:

答案 0 :(得分:2)

async getList() {
    const res = await this.http.get(this.rootURL ).toPromise();
    this.mimeList = await res as Mime[];
    this.arrayLenght = this.mimeList.length;
    return this.arrayLenght;
}

像这样更改您的getList()函数。您应该等到您的诺言得到解决。在另一个类中,在调用getList();之前添加await关键字。

this.databaseLength = await this.serviceMime.getList();