JSFiddle - React, Tailwind, and code Playground
by johnsonjo4531
HTML
<script src="//npmcdn.com/@reactivex/[email protected]/dist/global/Rx.js"></script>
<script src="//jashkenas.github.io/underscore/underscore-min.js"></script>
<script src="//code.jquery.com/jquery-latest.js"></script>
JavaScript
'use strict';
function filterError (data) {
var promise;
if(arguments.length > 1) {
promise = Promise.all([...arguments]);
} else {
promise = Promise.resolve(data);
}
promise =promise.catch(()=>({errorFilter: true}));
return Rx.Observable
.fromPromise(promise)
.filter(data=> typeof data === "object" ? !data.errorFilter : true);
}
function filterErrorWrap (data) {
if(typeof data === "function") {
return function () {
var args = arguments;
let tempFunc = function (data) {
try {
return data(...args);
} catch (e) {
return {errorFilter: true};
}
};
return Rx.Observable
.from([data])
.map(tempFunc)
.filter(data=> typeof data === "object" ? !data.errorFilter : true);
};
} else {
return filterError;
}
}
function getPromise (data) {
return new Promise(function(resolve, reject) {
if(data%2===0){
resolve(data);
} else {
reject();
}
});
}
Rx.Observable.from([1,2,3]).flatMap((data)=> filterErrorWrap(getPromise)(data)).subscribe(x=>console.log('stream 1',x));
/*
Rx.Observable.from([1,2,3]).flatMap(filterErrorWrap(function (data) {
if(data%2!==0) {
return data;
} else {
throw Error("ignore me");
}
})).subscribe(x=>console.log('stream 2', x));
*/