2 回答
TA贡献1856条经验 获得超11个赞
看起来this.Transform没有返回可观察值,所以switchMap这里不需要。你可以直接使用map:
service.FirstFunction().pipe(
map((info) => this.Transform(info),
switchMap((data) => service.secondFunction(data))
).subscribe((x)=> this.Updatedata(x));
另外,您可以通过传入函数来简化代码:
service.FirstFunction().pipe(
map(this.Transform.bind(this)),
switchMap(service.secondFunction.bind(service))
).subscribe(this.Updatedata.bind(this));
您必须绑定,因为函数绑定到一个对象。如果函数中没有使用 this,则可以跳过绑定工作。
顺便说一句,为了简化订阅工作,您还可以在此处使用 Tap:
service.FirstFunction().pipe(
map(this.Transform.bind(this)),
switchMap(service.secondFunction.bind(service)),
tap(this.Updatedata.bind(this))
).subscribe();
TA贡献1848条经验 获得超6个赞
你很接近了。您不需要首先switchMap转换数据。它可以在单个switchMap.
service.FirstFunction().pipe(
switchMap(info => service.secondFunction(this.Transform(info)))
).subscription(
(x) => this.Updatedata(x)
);
添加回答
举报