2016-10-17 252 views
1

取消訂閱後,我需要使用最初在數據中發送的ID調用函數。這樣做的正確方法是什麼?RxJS取消訂閱ID

它是一個嵌套的observable,如下面的代碼片段所示。

Observable.create(subscriber => { 
    const myData = nested.getData 
     .map(x => x > 1) 
     .subscribe(subscriber); 

    return() => { 
     myData.unsubscribe(); 
     callWithIdThatIsInData({id:123}) 
    }; 
}) 

退訂時,我需要callWithIdThatIsInData()什麼是嵌套觀察到的發送屬性..

任何人都可以點我在正確的方向嗎?

回答

2

解決方案是在訂閱嵌套的observable期間存儲與您的過濾條件匹配的屬性。

下面是一個例子:

const nested = Rx.Observable.from([1, 2, 3, 4, 5]); 

const stream = Rx.Observable.create((subscriber) => { 
    const saved = []; 

    const myData = nested.filter(x => x > 1).subscribe(x => { 
    subscriber.next(x); 
    saved.push(x); 
    }); 

    subscriber.complete(); 

    return() => { 
    myData.unsubscribe(); 
    //Here you have access to your data 
    console.log(saved); 
    } 

}); 

stream.subscribe(x => console.log(x)); 
+0

感謝信。這很明顯,但我是rxjs的新手。應該提到的問題是,我想知道是否有一種方法只能獲取數據(保存)一次,因爲我的ID在流中不會改變......不想浪費週期。再次感謝 – Thibs