Skip to content

Instantly share code, notes, and snippets.

@pangers
Created November 28, 2015 11:27
Show Gist options
  • Save pangers/de2e2f93e8627c903cb5 to your computer and use it in GitHub Desktop.
Save pangers/de2e2f93e8627c903cb5 to your computer and use it in GitHub Desktop.
function buttonClicked() {
var buttonClickedStream = Rx.Observable.just(null);
buttonClickedStream
.flatMap(getDataFromStorage)
.filter(checkIfdataMoreThanADayOld)
.flatMap(getNewData)
.map(performComplexOperations)
.subscribe((combinedData) => {
console.log(combinedData);
},
(error) => {
console.log('An error occured');
});
}
function getDataFromStorage() {
var dataStream1 = Rx.Observable.fromPromise(AsyncStorage.getItem(KEY_1));
var dataStream2 = Rx.Observable.fromPromise(AsyncStorage.getItem(KEY_2));
var dataStream3 = Rx.Observable.fromPromise(AsyncStorage.getItem(KEY_3));
return dataStream1
.combineLatest(
dataStream2,
dataStream3,
(data1, data2, data3) => {
return {
data1: data1,
data2: data2,
data3: data3
};
});
}
function checkIfdataMoreThanADayOld(combinedData) {
return combinedData.moreThanADayOld();
}
function getNewData(combinedData) {
var newDataStream = Rx.Observable.fromPromise(fetch('www.example.com/newData'));
var oldDataStream = Rx.Observable.just(combinedData);
return newDataStream
.combineLatest(
oldDataStream,
(newData, oldData) => {
return {
newData: newData,
oldData: oldData
};
});
}
function performComplexOperations(combineApiAndLocalData) {
//Perform complex operations with combineApiAndLocalData
//...
//...
//More opeations
return 'Successfully updated old data';
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment