对 REST API 的角度调用不等待数据到达

问题描述 投票:0回答:1

我有以下代码:

export class Whatever implements OnInitn{

    prices;

     ngOnInit(){
       this.CoinPricesService.getPrices().subscribe(
           pricesFromResponse => {
             this.prices = pricesFromResponse;
              console.log('this is what I get from the api: ', this.prices);
           }
       );
       
      console.log('this is my prices class object', this.prices);
     }
}

输出是这样的:

这是我未定义的价格类对象

api:这是我从 $, $ $

得到的

如您所见,第一条消息显示在第二条消息中,第二条消息位于第一位,但未定义, 显然发生的事情是代码不是在等待响应的到来,而是同步的,为什么?不是 observable.Subscribe(response ==> this.myVar = response);打算照顾那个? 我不能在我班级的其他地方使用数据,因为当代码到达那里时它总是未定义的,请帮忙

我的服务是这样的:

@Injectable({
  providedIn: 'root'
})
export class CoinPricesService {

  private apiURl = 'https://api.forprices/blablabla';

  constructor(private http: HttpClient) { }

  getPrices(){
    return this.http.get<any>(this.apiURl);
  }
}
javascript angular asynchronous rxjs observable
1个回答
2
投票

如果你有一个依赖价格的功能,那么你可以在订阅中执行这些功能。 像这样:

export class Whatever implements OnInitn {

    prices;

    ngOnInit() {
        this.CoinPricesService.getPrices().subscribe(
            pricesFromResponse => {
                this.prices = pricesFromResponse;
                console.log('this is what I get from the api: ', this.prices);
                this.someFunction(this.prices);
            }
        );
    }
    
    someFunction(prices: any) {
        //use prices ...
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.