Значение 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

См. Ручку входа в консоль.

1 ответ

Решение

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>

Другие вопросы по тегам