2016-08-08 2 views
2

Это то, что я делаю сейчас, и мне интересно, если есть лучший способмне нужна помощь понимание RxJx подписаться синтаксис

this.dataService.subscribe(
    data => this.data = data, 
    error => alert('Something went wrong'), 
    () => this.doSomethingOnCompletion()); 

Если я не ловя данные, однако, я мог бы просто изменить первый из трех функций:

() => null, 

documentation for rxjs 4.x не отвечает на этот вопрос достаточно хорошо для меня. Version 5.x объясняет еще меньше.

Итак, что такое вердикт? Является ли следующее неправильным, когда мне нужно делать ничего более, чем инициировать что-то?

this.dataService.subscribe(
    () => null, 
    error => alert('Boom.'), 
    () => this.doSomethingOnCompletion()); 

Если мне не нужно что-то делать после завершения, я просто оставлю эту часть. Что, если я только хочу проверить ошибки и ничего больше?

ответ

4

RxJS 4, если вам нужен только errors, тогда вы можете использовать метод subscribeOnError, который обрабатывает только ошибки.

Вы также можете использовать метод подписки, но вам просто нужно передать нулевое значение для обработчиков, которых вы не хотите, вам не нужно передавать свой собственный noop.

this.dataService.subscribe(
    null, 
    error => alert('Something went wrong')); 

RxJS 5 вы можете пройти так называемый PartialObserver:

this.dataService.subscribe({ 
    error: error => alert('Boom.'), 
    complete:() => this.doSomethingOnCompletion() 
}) 
+0

Это, как PartialObserver, это именно то, что я искал, хотя, честно говоря, я не понимаю, от смотрения в исходном коде, как Observer.ts поймет, какие пары ключ: значение попадают на какой интерфейс. Сегодня утром я буду играть с этим. :) – wolfhoundjesse

+0

Итак, похоже, что я делаю все просто прекрасно. Это похоже на вызов функции с дополнительными аргументами. Если вы хотите второй или третий необязательные аргументы, вам нужно передать null в первые. Что касается Angular 2, то Observable мы возвращаемся из сервиса http не является типичным, и поэтому он не принимает сам PartialObserver. Спасибо за руководство! – wolfhoundjesse

Смежные вопросы