typescript - 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 : 3
并 b : 3
会被打印出来。
从文档
与发布类似,但它会等到源 observable 完成并存储最后一个发出的值。与 publishReplay 和 publishBehavior 类似,即使没有更多订阅者,它也会继续存储最后一个值。如果发生后续订阅,他们将立即获得最后存储的值并完成。
但这似乎不会在这里发生。
解决方案
推荐阅读
- javascript - v8 -- 自动检测当前 Isolate
- oracle - ORA-01034: ORACLE 不可用,为什么要在 Linux 上为 Oracle Database 18c XE 配置数据库
- ms-access - 如何使用列表框过滤子表单
- actionscript-3 - Actionscript 3.0:如何在不跳过特定帧上编写的任何代码的情况下创建快进按钮?
- java - Spring Boot 应用程序即服务 Linux
- android - Android 本机库 (.so) - 不满意的链接错误
- windows - 在一行中运行多个 winrm 命令
- android - 为列表视图中的每一行添加一个 onclicklistener (android)
- java - 如何使用文件路径从存储中删除文件?
- php - Laravel 5.6 Passport 限制使用 ThrottlesLogins 登录尝试失败