我有一個訂閱,我想用一箇中間件代碼來表示事件。所以我有一件事想要訂閱一個可觀察的事物,而另一件事情是不可觀察的。使用subscription.next()是否爲反模式?
我想過使用科目爲這一點 - 這就是表裏如一成爲:
const repeater = new Rx.Subject();
function subscribe(observer) {
return repeater.subscribe(observer);
}
// in some other function, call repeater.next(val)
但後來,我開始尋找什麼定期訂閱()調用返回。我可以這樣做:
let sub = null;
function subscribe(observer) {
return Rx.Observable.create((o) => sub = o);
}
// elsewhere sub.next(val)
但是呢?
let unsub = null;
function subscribe(observer) {
unsub = Rx.Observable.create(() => false).subscribe(observer)
}
// elsewhere unsub.next(val)
所有這些東西都會向用戶發出val的信號。我在這裏不明白的奇怪的事情是有next()
可用的訂閱返回 - 我認爲next()
只生活在Observable上下文中的觀察者。
無論什麼時候我都需要對取消訂閱的東西保持控制 - 當中間件被拆除時,我需要發出信號流完成並釋放一些資源。令我感到意外的是,未接電話下一個功能正常。
這告訴我有一些RxJS,就觀察者和觀察者和主題等而言,我只是不明白。一般來說,我知道如何將事件源和其他類似事物連接到可觀察的流中。這實際上只是在無聊函數調用中構建可觀察流的上下文中 - 無論何時該函數被外部庫調用,該流都會發出更新後的可觀察事件。
啊哈!那'subscriberB.next(2); // =>「B:value:2」'部分確實固化了它。這現在很有意義。真棒回答。 – pfooti