Search code examples
javascriptecmascript-6redux-saga

Waiting in a redux-saga


I want to introduce a delay in a saga (using redux-saga).

How can I do this?

If redux-saga provides an API, I would also be interested in how to achieve it manually.

function* save({ payload }) {
    yield put(pending());
    // I want to simply wait (non-blocking) here for say 2 seconds
    yield put(complete());
}

Solution

  • Redux-sagas has a special effect for this:

    delay(ms, [val])

    Returns a Promise that will resolve after ms milliseconds with val.

    Example:

    import { delay, call } from 'redux-saga/effects'
    
    function* someSaga(input) {
      yield put(someAction())
      yield delay(500)
      yield put(anotherAction())
    }