I don't understand the need for something like redux-thunk. From what I understand a thunk is a function which returns a function. The wrapped expressions and the use of middleware appear to me to do more to obfuscate what is happening. Taken from redux-thunk's sample code
import thunk from 'redux-thunk'; // Note: this API requires redux@>=3.1.0 const store = createStore( rootReducer, applyMiddleware(thunk) ); // Meet thunks. // A thunk is a function t hat returns a function. // This is a thunk. function makeASandwichWithSecretSauce(forPerson) { // Invert control! // Return a function that accepts `dispatch` so we can dispatch later. // Thunk middleware knows how to turn thunk async actions into actions. return function (dispatch) { return fetchSecretSauce().then( sauce => dispatch(makeASandwich(forPerson, sauce)), error => dispatch(apologize('The Sandwich Shop', forPerson, error)) ); }; } // Thunk middleware lets me dispatch thunk async actions // as if they were actions! store.dispatch( makeASandwichWithSecretSauce('Me') ); The above code could be written far more concisely and intuitive:
fetchSecretSauce().then( sauce => store.dispatch(makeASandwich('Me', sauce)), error => store.dispatch(apologize('The Sandwich Shop', forPerson, error)) ) My question is what need is redux-thunk fulfilling and how does it improve on existing solutions similar to the example above.
loadMyThunk()- all the dispatched actions are abstracted to the thunk. I have a libredux-entitythat utilizes a pattern like this: github.com/mikechabot/redux-entity/blob/master/src/thunk.js