Skip to content

Instantly share code, notes, and snippets.

@captainill
Forked from gaearon/observeStore.js
Last active August 29, 2015 14:10
Show Gist options
  • Save captainill/c9671ea67d65125f042d to your computer and use it in GitHub Desktop.
Save captainill/c9671ea67d65125f042d to your computer and use it in GitHub Desktop.
// Usage example:
//
// willTransitionTo(transition, params) {
// transition.wait(
// observeStore(
// DraftStore,
// s => s.isLoaded()
// ).then(() => {
// if (DraftStore.isMissingTitle()) {
// transition.redirect('composeDraft', params);
// }
// })
// );
// }
'use strict';
var Promise = require('bluebird');
function observeStore(store, predicate) {
var performCheck;
return new Promise(resolve => {
performCheck = () => {
if (predicate.call(null, store)) {
resolve();
}
};
store.addChangeListener(performCheck);
performCheck();
}).finally(() => {
store.removeChangeListener(performCheck);
});
}
module.exports = observeStore;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment