Skip to content

Instantly share code, notes, and snippets.

@ccnokes
Last active October 11, 2022 14:18

Revisions

  1. ccnokes revised this gist Nov 8, 2019. No changes.
  2. ccnokes revised this gist Feb 20, 2017. 1 changed file with 4 additions and 2 deletions.
    6 changes: 4 additions & 2 deletions rx-online-offline.js
    Original file line number Diff line number Diff line change
    @@ -4,17 +4,19 @@ 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();
    sub.complete(); //this one only emits once, so now we end it
    })
    );
    }

    // implement it
    const onlineSub = createOnline$().subscribe(console.log);
    const onlineSub = createOnline$().subscribe(isOnline => console.log(isOnline));
    onlineSub.unsubscribe();
  3. ccnokes revised this gist Feb 20, 2017. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions rx-online-offline.js
    Original file line number Diff line number Diff line change
    @@ -15,5 +15,6 @@ function createOnline$() {
    );
    }

    // implement it
    const onlineSub = createOnline$().subscribe(console.log);
    onlineSub.unsubscribe();
  4. ccnokes revised this gist Feb 20, 2017. No changes.
  5. ccnokes created this gist Feb 20, 2017.
    19 changes: 19 additions & 0 deletions rx-online-offline.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,19 @@
    const { Observable } = require('rxjs/Observable');
    require('rxjs/add/observable/fromEvent');
    require('rxjs/add/operator/map');
    require('rxjs/add/observable/merge');

    function createOnline$() {
    return Observable.merge(
    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();
    })
    );
    }

    const onlineSub = createOnline$().subscribe(console.log);
    onlineSub.unsubscribe();