parent
b2cddcd69b
commit
0ae39f1b67
1 changed files with 27 additions and 0 deletions
@ -0,0 +1,27 @@ |
||||
class Store { |
||||
constructor(reducer, catcher) { |
||||
this.reducer = reducer; |
||||
this.catcher = catcher; |
||||
this.state = this.reducer(undefined, {}); |
||||
} |
||||
|
||||
dispatch(action) { |
||||
if (action instanceof Promise) { |
||||
action.then((a) => { |
||||
this.state = this.reducer(this.state, a); |
||||
}).catch(this.catcher) |
||||
} else { |
||||
try { |
||||
this.state = this.reducer(this.state, action); |
||||
} catch (e) { |
||||
this.catcher(e); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
const empty = () => {}; |
||||
|
||||
export function createStore(reducer, catcher = empty) { |
||||
return new Store(reducer, catcher); |
||||
} |
Reference in new issue