rxjs - document.visibilityState 值与 mapTo() 运算符不符
问题描述
当用作带有事件的可观察对象的管道时,运算符document.visibilityState
返回的值与预期不同。mapTo()
document.visibilitychange
fromEvent(document, 'visibilitychange')
.pipe(
mapTo(document.visibilityState)
)
.subscribe((val) => {
console.log(val, document.visibilityState);
});
笔示例:https ://codepen.io/nametoforget/pen/ZEQmdBj
请参阅控制台登录笔。
解决方案
mapTo
在开始时捕获一次返回值并一直使用此初始值。如果您想使用最新的值,请map
改为:
const { fromEvent } = rxjs; // = require("rxjs")
const { map, startWith } = rxjs.operators; // = require("rxjs/operators")
fromEvent(document, 'visibilitychange')
.pipe(
map(() => document.visibilityState),
startWith(document.visibilityState)
)
.subscribe((val) => {
console.log(val, document.visibilityState);
});
<script src="https://unpkg.com/rxjs@6.6.0/bundles/rxjs.umd.min.js"></script>
推荐阅读
- flutter - 单击按钮时颤动向下滚动并打开文本字段
- ios - 如何在 UIBezierPath Swift 中绘制这样的曲线?
- c++ - 'if((mask | u)==u)' 是什么意思?
- typescript - 如何在 nuxt.js 中使用 axios 获取 API?
- youtube - 以编程方式获取当前正在播放的 YouTube 视频
- javascript - 通过 CSS 或 JavaScript/jQuery *不*导致对齐失败的方式来删除文本?
- css - 如何使容器水平居中而不使容器内的文本居中?
- java - 将字符串转换为 UUID 时验证字符串长度不等于 36 是否正确
- r - 在 r-plotly 中显示值之间的差异
- web - gRPC 如何处理多个重叠请求?