RxJS-一名观察员正在等待多个事件

时间:2019-02-24 14:07:00

标签: rxjs

我正在尝试实现一种模式,在该模式下,我想向所有单个观察者的订阅者发出事件,然后等待所有订阅者做出响应。因此,“ A”发出“ 1”,“ 2”和“ 3”(都已订阅),然后在“ 1”,“ 2”和“ 3”都响应后处理结果。订阅者列表是动态的(即我不知道他们的数量),但是一旦添加,它就不会被删除

自然地,这的后半部分是困难的部分,我不知道如何实现它。我唯一能想到的就是让每个订阅者将自己的Subject发送给主要的Observable服务,并使用zip,但我更喜欢一个更好的解决方案。

我的解决方案(在伪AngularJS中):

Main.js:

function() {
    var subscribers = [];
    var subjectPublishingFromMain = new RxJs.Subject();
    var publishToMain = function(subject) {
        subscribers.push(subject);
    };

    var publishToAllAndDealWithResponse = function() {
        subjectPublishingFromMain.next(giveMeData);
        zip(subscribers).subscribe( 
            function(allTheData) {
            //Deal with all the subscriber data
        });
    };

    return {
        subjectPublishingFromMain: subjectPublishingFromMain,
        publishToMain: publishToMain
    };
}

Subscriber1.js

function(main) {
    var mySubject = new RxJs.Subject();
    var toMain = new RxJS.Subject(); 
    main.subjectPublishingFromMain.subscribe(
        function(fromMain) {   
            if(fromMain.type === 'INITIAL') {
                main.publishToMain(mySubject);
            }
            else() {
                mySubject.next(myData);
        }
    });
}

0 个答案:

没有答案