0.0.4 • Published 7 years ago

redux-promise-queue-middleware v0.0.4

Weekly downloads
6
License
MIT
Repository
github
Last release
7 years ago

redux-promise-queue-middleware

A simple redux middleware to chain async actions using promises

Install

npm install --save redux-promise-queue-middleware

Usage

Import the middleware, initialize and add it to Redux store using applyMiddleware function:

import {createStore, applyMiddleware} from 'redux'
import promiseQueueMiddleware from 'redux-promise-queue-middleware'

let createStoreAndApplyMiddleware = applyMiddleware(
    //others middleware...
    promiseQueueMiddleware(),
    //others middleware...
)(createStore);

The queue middleware will sequence all the actions that specify the "queue" parameter in the action object:

function actionToEnqueue(){
    return {
        type: 'ACTION-TYPE'
        queue:{
            id: 'QUEUE-NAME'
            promise: new Promise((resolve)=>{ 
                        console.log('async action begin');
                        setTimeout(()=>{
                            console.log('async action resolved');
                            resolve()
                        },2000);
                   }
            //other options
        }
    }
}

Usage with promise middleware

If you already use a middleware for managing promises you can add the promiseQueueMiddleware before it to manage queues without affecting its behavior:

import {createStore, applyMiddleware} from 'redux'
import promiseQueueMiddleware from 'redux-promise-queue-middleware'
//import promiseMiddleware from 'promise-middleware-lib'

let createStoreAndApplyMiddleware = applyMiddleware(
    //promiseMiddleware goes here
    promiseQueueMiddleware(),
    //others middleware...
)(createStore);

In this case you can avoid filling the promise option and let your promise middleware to handle and return the promise to schedule.

Options

NameTypeDefaultDescription
idstringundefinedname of the queue. Note: in order to work a queue name must be specified
promisefuncundefinedpromise used to wait for async operation (optional)
onActionDequeuefuncundefinedoperations to perform after action dequeue and before it's execution
clearQueueOnRejectboolfalseif an action of the queue is rejected the following actions in the queue won't be executed