Skip to content

DreamworldSolutions/async-tasks

Repository files navigation

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •