Javascript 角度4/6/7-如何获取异步变量?

Javascript 角度4/6/7-如何获取异步变量?,javascript,angular,typescript,async-await,Javascript,Angular,Typescript,Async Await,我想创建一个计算,如: var a: number; var b: number; this.httpClient.get<int>(baseUrl+'varA/get/'+id).subscribe( res => this.a = res); this.httpClient.get<int>(baseUrl+'varB/get/'+id).subscribe( res => this.b = res); var c = a + b ; var a:编

我想创建一个计算,如:

var a: number;
var b: number;
this.httpClient.get<int>(baseUrl+'varA/get/'+id).subscribe( res => this.a = res);
this.httpClient.get<int>(baseUrl+'varB/get/'+id).subscribe( res => this.b = res);

var c = a + b ; 
var a:编号;
变量b:数字;
this.httpClient.get(baseUrl+'varA/get/'+id).subscribe(res=>this.a=res);
this.httpClient.get(baseUrl+'varB/get/'+id).subscribe(res=>this.b=res);
var c=a+b;
如何异步订阅?通常我在检索VarA后得到VarB。但是我想做一个异步的(使用async和Wait)。。。。如何在subscribe()中执行此操作


我使用的是angular 7。

您应该使用rxjs conbinator observable,比如
CombineTest

下面是虚拟ajax请求的示例:

import { of, combineLatest } from 'rxjs'; 

const simulateQuery1$ = of(1); // Can be any observable
const simulateQuery2$ = of(3); // Can be any observable   
// CombineLatest will wait complete from both observable before next array of both value. work well for Ajax request who do 1 next then complete the observable.
combineLatest(simulateQuery1$, simulateQuery2$).subscribe(arrayVal => {
  console.log(arrayVal[0] + arrayVal[1]);
});

您可以使用
RXJS

var c;
getConditionalDataUsingPromise() {
    this.httpClient.get<int>(baseUrl+'varA/get/'+id).toPromise().then(data => {
      console.log('First Promise resolved.');
        this.httpClient.get<int>(baseUrl+'varB/get/'+id).toPromise().then(data => {
          this.c=data;
          console.log('Second Promise resolved.')
        });

    });
  }
var-c;
getConditionalDataUsingPromise(){
this.httpClient.get(baseUrl+'varA/get/'+id).toPromise().then(data=>{
console.log(“解决了第一个承诺”);
this.httpClient.get(baseUrl+'varB/get/'+id).toPromise().then(data=>{
这个.c=数据;
console.log('第二个承诺已解决')
});
});
}

使用fork join发出多个请求

public requestDataFromMultipleSources(baseUrl): Observable<any[]> {
    var a: number;
    var b: number;
    let response1 = this.httpClient.get<int>(baseUrl+'varA/get/'+id));
    let response2 = this.httpClient.get<int>(baseUrl+'varA/get/'+id)
    return Observable.forkJoin([response1, response2]);
  }

ngOnInit() {
        this.requestDataFromMultipleSources(this.baseUrl).subscribe(responseList => {
            let a = responseList[0];
            let b = responseList[1];
            var c = a + b 
     });

public requestDataFromMultipleSources(baseUrl):Observable

您希望流程做什么。我想让a和b异步,然后将它们计算到c中。
let subscription=Observable.zip(obs1,obs2,…).subscription(…)你好,Manish,右pruposal严格回答原始问题。但在我看来,根据角度标准来做这件事是不正确的。请考虑在RXJS项目中永远不要改变可观察到的承诺。