Если я создаю наблюдаемый, используя метод $ createObservableFunction, и я подписываюсь на это наблюдаемое несколько раз. Последний абонент переопределяет любого другого абонента.
Однако, если я создаю наблюдаемый с rx.Observable.interval() и подписываюсь на это несколько раз. Оба абонента стреляют по интервалу.
Почему? Что еще более важно, как мне получить $ createObservableFunction для запуска обоих абонентов.
app.controller('MainCtrl', function($scope, rx) {
var test = $scope.$createObservableFunction('testClick');
var test2 = rx.Observable.interval(3000);
test.subscribe(function(){
console.log('I never run, why?');
});
test.subscribe(function(){
console.log('Why am I overriding the above subscribe');
});
test2.subscribe(function(){
console.log('This observable runs both subscribed functions')
});
test2.subscribe(function(){
console.log('See this gets called and so does the above');
});
});
Пример плункера, который иллюстрирует проблему. http://plnkr.co/edit/kXa2ol?p=preview
Так что я думаю, что я понял, почему это не работает. $ createObservableFunction() использует метод Rx.Observable.create(), который возвращает реализацию singleCast подписчика. Для многоадресной рассылки вам нужно сделать $ createObservableFunction(). Publish(). RefCount(), чтобы сохранить соединение с источником. –
Для записи новые версии rx.angular делают это по умолчанию. – PhiLho