提醒:本文发布于 3 年前 ,文中所描述的信息可能已发生改变,请谨慎使用。

observer 在订阅时才创建

let x
let source = Rx.Observable.create(observer => {
    x = observer
    observer.onNext(Date.now())
    setInterval(() => {
        console.log('diff', x === observer, observer, x)
    }, 1000)
}).take(3)
setInterval(() => {
    x.onNext(Date.now() + '    ')
}, 2000)

source.subscribe(createObserver('SourceA'));
source.subscribe(createObserver('SourceB'));

function createObserver(tag) {
    return Rx.Observer.create(
        function (x) {
            console.log('Next: ' + tag + x);
        },
        function (err) {
            console.log('Error: ' + err);
        },
        function () {
            console.log('Completed');
        });

只有 SourceB 的订阅会被触发,这个使用应该用 BehaviourSubject