使用带有打字稿的rxjs observables组织呼叫链的问题
我是RXJS的新手,在我的打字稿代码中组织调用链时遇到一些麻烦。 问题是-如何制作此商品。http.get('http://www.gooogle.com'); 只打一次电话。这段代码不是真实的,只是复制的最小情况
import {Injectable} from '@angular/core';
import {flatMap, map} from 'rxjs/operators';
import {Observable, from} from 'rxjs';
import {HttpClient} from '@angular/common/http';
@Injectable()
export class CoolService {
constructor(private http: HttpClient) {}
x(): Observable<Object> {
return from(Promise.resolve({a: {b: 'c'}})).pipe(
flatMap((x) => {
console.log(x);
return this.http.get('http://www.gooogle.com');
}), map((res) => {
console.log(res);
return res;
}));
}
}
答案 0 :(得分:0)
原因是我对rxjs运算符的工作原理不了解。所有运营商都在为每个订阅进行工作,但我认为它正在为所有订阅进行一次计算。因此,我在服务中进行了一系列调用,并在不同的位置订阅响应-因此,操作员在代码中的运行与订阅一样多,所以我需要重建