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)
);
添加回答
舉報