我想知道我的应用程序何时离线并重新上线。我在以下位置注册了以下事件rxjs
:
const online = Rx.Observable.fromEvent(window, 'online');
const offline = Rx.Observable.fromEvent(window, 'offline');
const source = Rx.Observable.combineLatest(online, offline).map(() => navigator.onLine);
source.subscribe(result => {
console.log('I\'m online: ' + (result ? 'jup' : 'nope'));
});
但是,当我第一次离线时,事件不会被触发,尽管如果我添加常规的addEventListener
我看到它们触发得很好:
window.addEventListener('online', () => console.log('online triggered'));
window.addEventListener('offline', () => console.log('offline triggered'));
看一眼这个jsbin http://jsbin.com/zegidegiba/edit?js,console例如,通过 devtools 切换你的网络,你会看到第一次它不会记录I'm online: ...
.
The combineLatest
运算符要求所有源 Observables 发出至少一个值。
对于您来说,这意味着您应该初始化每个流,然后只监听更改:
const source = Rx.Observable.combineLatest(
online.startWith(null),
offline.startWith(null),
)
.skip(1)
.map(() => navigator.onLine)
也许你甚至不需要使用skip(1)
如果你想知道初始状态navigator.onLine
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)