首页 > 解决方案 > RXJS publishLast 不发布最后发出的值?

问题描述

import { Observable, of, Subject, AsyncSubject } from 'rxjs';
import { publishLast, publishBehavior, publishReplay, tap } from 'rxjs/operators'

    const subject = new Subject();
    subject.pipe(
      tap(val => console.log('inside', val)),
      publishLast()
    );

    subject.subscribe(val => console.log('a :', val));

    subject.next('1');
    subject.next('2');
    subject.next('3');

    subject.subscribe(val => console.log('b :', val));

输出

a : 1
a : 2
a : 3

由于使用了 publishLast(),我预计a : 3b : 3会被打印出来。

从文档

与发布类似,但它会等到源 observable 完成并存储最后一个发出的值。与 publishReplay 和 publishBehavior 类似,即使没有更多订阅者,它也会继续存储最后一个值。如果发生后续订阅,他们将立即获得最后存储的值并完成。

但这似乎不会在这里发生。

https://rxjs-dev.firebaseapp.com/api/operators/publishLast

标签: typescriptrxjsangular2-observables

解决方案


推荐阅读