2017-02-07 3 views
0

Я работаю над своим первым продуктом Angular 2. Я создал этот Observable.timer, а затем подписался на него. Он проверяет сервер на наличие данных.Как приостановить наблюдение в угловых 2

Мои вопросы

Как сделать паузу и возобновите это?

ngOnInit(): void { 
    this.poll = Observable.timer(500,500).subscribe((t: any) => { 
     this.request.getRackList(+this.global.zoneId).subscribe(
     incoming => this.import(incoming), 
     err => { this.global.err(err) } 
    ); 
    }) 
    this.canOpenClose = (this.global.mode === 2); 
    } 
+0

Альтернатива описана здесь https://github.com/ReactiveX/rxjs/issues/1542 – martin

ответ

2

Существует несколько подходов к приостановке наблюдения. Вы могли бы:

  • Отказаться/переоформить подписку при необходимости
  • .filter() из выбросов при паузе
  • создать connectable Observable, так что вы можете приостановить/начать эмиссию для всех абонентов
+0

Спасибо так много. Я живу твоей второй идеей, но понятия не имею, как это сделать. Знаете ли вы хороший сайт, где новичок может узнать больше? –

+0

Мне очень понравился этот разговор https://youtu.be/3LKMwkuK0ZE Отличное место для знаний - http://reactivex.io или http://rxmarbles.com –

0

Вы можете посмотреть здесь : RxJS - pause, upon resume give last paused value

В основном, вы используете оператор switchMap, чтобы остановить выбросы таймера/перезапустить их и сделать паузу ect, чтобы испустить логическое значение, указывающее, хотите ли вы приостановить или перезапустить. Если вам не нужно последнее значение, вы можете заменить publishReplay на publish

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