actionPromise.js 615 B

123456789101112131415161718
  1. const actionPending = name => ({type: 'PROMISE', status: 'PENDING', name})
  2. const actionResolved = (name, payload) => ({type: 'PROMISE', status: 'RESOLVED', name, payload})
  3. const actionRejected = (name, error) => ({type: 'PROMISE', status: 'REJECTED', name, error})
  4. const actionPromise = (name, promise) =>
  5. async (dispatch) => {
  6. dispatch(actionPending(name))
  7. try{
  8. let payload = await promise
  9. dispatch(actionResolved(name, payload))
  10. return payload;
  11. }
  12. catch(error){
  13. dispatch(actionRejected(name, error))
  14. }
  15. }
  16. export default actionPromise;