Last active
August 28, 2022 21:01
Revisions
-
msociety revised this gist
May 2, 2018 . 1 changed file with 5 additions and 1 deletion.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -52,13 +52,17 @@ function delay(period) { function createObservable(subscribe) { return { subscribe: subscribe, // "subscribe" === "giveMeSomeData" map: map, filter: filter, delay: delay }; } // Using it: // --------- // "Observable" === "stream of events" const arrayObservable = createObservable(function subscribe(ob) { [10, 20, 30].forEach(ob.next); ob.complete(); -
msociety revised this gist
May 2, 2018 . 1 changed file with 4 additions and 3 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -23,8 +23,9 @@ function filter(conditionFn) { const outputObservable = createObservable(function subscribe(outputObserver) { inputObservable.subscribe({ next: function(x) { if (conditionFn(x)) { outputObserver.next(x); } }, error: e => outputObserver.error(e), complete: () => outputObserver.complete() @@ -64,7 +65,7 @@ const arrayObservable = createObservable(function subscribe(ob) { }); const clickObservable = createObservable(function subscribe(ob) { document.addEventListener("click", ob.next); }); const observer = { -
msociety revised this gist
May 2, 2018 . 1 changed file with 3 additions and 0 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -15,6 +15,7 @@ function map(transformFn) { complete: () => outputObserver.complete() }); }); return outputObservable; } function filter(conditionFn) { @@ -29,6 +30,7 @@ function filter(conditionFn) { complete: () => outputObserver.complete() }); }); return outputObservable; } function delay(period) { @@ -44,6 +46,7 @@ function delay(period) { complete: () => outputObserver.complete() }); }); return outputObservable; } function createObservable(subscribe) { -
msociety created this gist
May 2, 2018 .There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,88 @@ /* * André Staltz (@andrestaltz): You will learn RxJS at ng-europe 2016 * https://www.youtube.com/watch?v=uQ1zhJHclvs */ function map(transformFn) { const inputObservable = this; const outputObservable = createObservable(function subscribe(outputObserver) { inputObservable.subscribe({ next: function(x) { const y = transformFn(x); outputObserver.next(y); }, error: e => outputObserver.error(e), complete: () => outputObserver.complete() }); }); } function filter(conditionFn) { const inputObservable = this; const outputObservable = createObservable(function subscribe(outputObserver) { inputObservable.subscribe({ next: function(x) { const y = conditionFn(x); outputObserver.next(y); }, error: e => outputObserver.error(e), complete: () => outputObserver.complete() }); }); } function delay(period) { const inputObservable = this; const outputObservable = createObservable(function subscribe(outputObserver) { inputObservable.subscribe({ next: function(x) { setTimeout(() => { outputObserver.next(x); }, period); }, error: e => outputObserver.error(e), complete: () => outputObserver.complete() }); }); } function createObservable(subscribe) { return { subscribe: subscribe, map: map, filter: filter, delay: delay }; } const arrayObservable = createObservable(function subscribe(ob) { [10, 20, 30].forEach(ob.next); ob.complete(); }); const clickObservable = createObservable(function subscribe(ob) { document.addEventListener("click", ob.next()); }); const observer = { next: function nextCallback(data) { console.log(data); }, error: function errorCallback(data) { console.log(data); }, complete: function completeCallback(data) { console.log("done"); } }; arrayObservable .map(x => x / 10) .filter(x => x !== 2) .subscribe(observer); clickObservable .map(ev => ev.clientX) .filter(x => x > 200) .delay(2000) .subscribe(observer);