如何逐行运行函数/如何异步运行函数?

时间:2021-01-23 16:01:39

标签: typescript api web angular8

我正在尝试按顺序运行此功能。输出应该是 纬度长度, 纬度长度A, 纬度长度B

但我得到的输出是 纬度长度, 纬度长度 B, 纬度长度A

我想先处理“this.adminService.getUserList().subscribe(res => {}”,但它在 makeAnAPICall() 函数完成后被处理。 我的代码如下:

 async makeAnAPICall():void {
     console.log("latitude length",this.latitude.length);
     this.latitude = [];
     this.longitude = [];
     delay(2000);

    await this.adminService.getUserList().subscribe(res => {
       for(let i =0; i < res.length; i++) {
         this.latitude.push(res[i].latitude);
         this.longitude.push(res[i].longitude);
       };
       console.log("lat length A",this.latitude.length)
     }); 
    
    

     console.log("lat length B ",this.latitude.length);
  }

1 个答案:

答案 0 :(得分:0)

您需要先将 observable 转换为 promise。

async makeAnAPICall():void {
     console.log("latitude length",this.latitude.length);
     this.latitude = [];
     this.longitude = [];
     delay(2000);
     const res = await this.adminService.getUserList().first().toPromise();
   
       for(let i =0; i < res.length; i++) {
         this.latitude.push(res[i].latitude);
         this.longitude.push(res[i].longitude);
       };
       console.log("lat length A",this.latitude.length)
     console.log("lat length B ",this.latitude.length);
  }