首页 > 解决方案 > 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

请参阅控制台登录笔。

标签: rxjsvisibilitychange

解决方案


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>


推荐阅读