@dreamworld/async-tasks

1.0.0 • Public • Published

Async Tasks

  • It is used to manage async tasks with redux state.

Usage pattern

Activate reducer on slice (Required)

import * as asyncTasks from '@dreamworld/async-tasks';
import { store } from "path/to/store";

asyncTask.init(store);

Use Generator function to run any async task

Foreground task
import { run } from '@dreamworld/async-tasks';

try {
  const result = yield call(run, taskId, fn, timeoutMillis);
} catch (e) {
  //handle error
}
Background task
import { run } from '@dreamworld/async-tasks';

try {
  const taskId = yield fork(run, taskId, fn, timeoutMillis);
  yield cancel(taskId);
} catch (e) {
  //handle error
}

To retrieve the result of a Task from another Saga

import { taskResult } from '@dreamworld/async-tasks';

try {
  const result = yield call(taskResult, taskId);
} catch (e) {
  //if Task failed.
}

Selectors

  • Task get(id): Returns Task of given id.
  • String status(id): Returns current status of given taskId
  • Object result(id): Returns result of given taskId

It manages state at below path.

Path: ___DW_asyncTasks.$taskId

name data type description
status String Possible values: IN_PROGRESS, SUCCESS and FAILED.
startedAt Number What Task execution is started
completedAt Number When Task is completed; status changed to SUCCESS or FAILED.
result Object Task result. Promise resolved with this
error Error String

Readme

Keywords

none

Package Sidebar

Install

npm i @dreamworld/async-tasks

Weekly Downloads

3

Version

1.0.0

License

MIT

Unpacked Size

15 kB

Total Files

14

Last publish

Collaborators

  • chiragmoradiya
  • chetang7
  • ajay-dhameliya
  • dw-devops