What's the point of AsyncSubject in RXJS?

后端 未结 2 1063

The documentation for RxJS defines AsyncSubject as follows:

The AsyncSubject is a variant where only the last value of the O

2条回答
  •  不知归路
    2021-01-11 13:00

    It looks like it could be useful for fetching and caching (one-shot) resources, since generally http.get will emit one response then complete.

    From rxjs/spec/subjects/AsyncSubject-spec.ts

    it('should emit the last value when complete', () => {
    it('should emit the last value when subscribing after complete', () => {
    it('should keep emitting the last value to subsequent subscriptions', () => {

    Components that subscribe after the fetch will then pick up value, which is not the case for Subject

    const subject = new Rx.Subject();
    const asyncSubject = new Rx.AsyncSubject();
    
    // Subscribe before
    subject.subscribe(x => console.log('before complete - subject', x))
    asyncSubject.subscribe(x => console.log('before complete - asyncSubject', x))
    
    subject.next('value 1');
    subject.complete();
    subject.next('value 2');
    
    asyncSubject.next('value 1');
    asyncSubject.complete();
    asyncSubject.next('value 2');
    
    // Subscribe after
    subject.subscribe(x => console.log('after complete - subject', x))
    asyncSubject.subscribe(x => console.log('after complete - asyncSubject', x))
    .as-console-wrapper { max-height: 100% ! important; top: 0 }

提交回复
热议问题