nuclear-js icon indicating copy to clipboard operation
nuclear-js copied to clipboard

When using batch, do not receive error when calling dispatch inside of dispatch

Open wrightnathan opened this issue 9 years ago • 2 comments

The following code will not throw an error in console:

in my componentDidMount():

Reactor.batch(() => {
    Reactor.dispatch('DISPATCH1');
})

in my store:

initialize() { 
    this.on('DISPATCH1', (state) => {
        Reactor.dispatch('DISPATCH2');
        return state;
    });
    this.on('DISPATCH2', (state) => { return state.set('blah', foo);} );
}

This will execute DISPATCH2 inside of DISPATCH1, but will result in the changes made by DISPATCH2 being thrown away (instead of receiving an error message).

If I remove the batch, then I receive the following error message:

nuclear.js:5647Uncaught Error: Dispatch may not be called while a dispatch is in progress

wrightnathan avatar Oct 21 '16 15:10 wrightnathan

It is showing that error because you are dispatching DISPATCH2 from within the handler of DISPATCH1. That yielded the error. Try moving that logic to an action.

code-shoily avatar Nov 30 '16 16:11 code-shoily

I realize there's a problem with my code. However, the issue I raised is that you don't get any sort of error from nuclear if you do this inside of a batch.

wrightnathan avatar Dec 01 '16 15:12 wrightnathan