RxJs: Как узнать, какие операторы закрывают поток? - PullRequest
0 голосов
/ 12 июня 2019

Мне интересно, есть ли способ узнать, закрывает ли оператор поток или нет? Я пытался найти это в документации, но сегодня не повезло.

1 Ответ

0 голосов
/ 15 июня 2019

Я думаю, что вы ищете "complete" обратный вызов (или третий параметр) метода подписки () [подробности см. В комментариях] -

yourObservable.pipe(
      take(1) //or take any number of values i.e. which is a finite number,
      map(),
      //or some other operators as per your requirement
    ).subscibe(
      //first call back is to handle the emitted value
      //this will be called every time a new value is emitted by observable
      (value) => {
        //do whatever you want to do with value
        console.log(value);
      },
      //second callback is for handling error
      //This will be called if an observable throws an exception
      //once an exception occurred then also observable complete and no more values recieved by the subscriber
      //Either complete callback is called or error callback is called but not 
      //both
      (exception) => {
        //do whatever you want to do with error
        console.log(error);
      },
      //third callback will be called only when source observable is complete
      //otherwise it will never get called
      //This is the place to know if an observable is completed or not
      //Once complete callback fires, subscription automatically unsubscribed
      () => {
        console.log(`Observable is complete and will not emit any new value`)
      }
    );

см. Следующий стекаблитц - https://stackblitz.com/edit/rxjs-toarray-xwvtgk?file=index.ts&devtoolsheight=100

...