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项目中永远不要改变可观察到的承诺。