亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在最后鏈接一個 observable 、一個常規同步函數和另一個 observable

如何在最后鏈接一個 observable 、一個常規同步函數和另一個 observable

倚天杖 2023-07-29 13:43:47
我想利用pipe一個可觀察的命令和鏈接,處理訂閱中的輸出數據,然后運行一個函數來轉換數據,然后將結果輸入到一個新的可觀察函數。我試圖將函數與管道鏈接起來,switchMap但我不確定如何提升并能夠在兩個可觀察量之間插入轉換函數service.FirstFunction().pipe(       switchMap((info) => this.Transform(info),switchMap((data) => service.secondFunction(data))  ) .subscription((x)=> this.Updatedata(x));this.transform是一個常規函數,而不是一個可觀察的函數
查看完整描述

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();


查看完整回答
反對 回復 2023-07-29
?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

你很接近了。您不需要首先switchMap轉換數據。它可以在單個switchMap.


service.FirstFunction().pipe(

  switchMap(info => service.secondFunction(this.Transform(info)))

).subscription(

  (x) => this.Updatedata(x)

);


查看完整回答
反對 回復 2023-07-29
  • 2 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號