Skip to content

Instantly share code, notes, and snippets.

@ccnokes
Last active October 11, 2022 14:18
Show Gist options
  • Save ccnokes/bd5b975dab213bb60b877e49754dd675 to your computer and use it in GitHub Desktop.
Save ccnokes/bd5b975dab213bb60b877e49754dd675 to your computer and use it in GitHub Desktop.
Online/offline event observable with RxJS (see comments below for a better, more up-to-date way of doing this)
const { Observable } = require('rxjs/Observable');
require('rxjs/add/observable/fromEvent');
require('rxjs/add/operator/map');
require('rxjs/add/observable/merge');
function createOnline$() {
//merge several events into one
return Observable.merge(
//use .map() to transform the returned Event type into a true/false value
Observable.fromEvent(window, 'offline').map(() => false),
Observable.fromEvent(window, 'online').map(() => true),
//start the stream with the current online status
Observable.create(sub => {
sub.next(navigator.onLine);
sub.complete(); //this one only emits once, so now we end it
})
);
}
// implement it
const onlineSub = createOnline$().subscribe(isOnline => console.log(isOnline));
onlineSub.unsubscribe();
Copy link

ghost commented Sep 11, 2020

Thanks for responding, you are correct! I managed to use different RXJS events to handle this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment