Create one-time subscription

后端 未结 6 2312
遇见更好的自我
遇见更好的自我 2020-12-13 01:05

I need to create a subscription to an Observable that is immediately disposed of when it is first called.

Is there something like:

obser         


        
6条回答
  •  天涯浪人
    2020-12-13 01:55

    To supplement @Brandon's answer, using first() or the like is also essential for updating a BehaviorSubject based on its Observable. For example (untested):

    var subject = new BehaviorSubject({1:'apple',2:'banana'});
    var observable = subject.asObservable();
    
    observable
      .pipe(
        first(), // <-- Ensures no stack overflow
        flatMap(function(obj) {
          obj[3] = 'pear';
          return of(obj);
        })
      )
      .subscribe(function(obj) {
        subject.next(obj);
      });
    

提交回复
热议问题