Effection Logo

function action

thefrontside/effection

function action<T>(executor: Executor<T>, desc?: string): Operation<T>

Create an Operation that can be either resolved (or rejected) with a synchronous callback. This is the Effection equivalent of new Promise(). Actions are stateless and so unlike the new Promise() executor function, the action executor is called every time that an action is evaluated.

The resolver must return a "finally" function that will always be called regardless of whether the action was resolved or rejected, or discarded.

Examples

Example 1

let five = yield* action((resolve, reject) => {
  let timeout = setTimeout(() => {
    if (Math.random() > 5) {
      resolve(5)
    } else {
      reject(new Error("bad luck!"));
    }
  }, 1000);
  return () => clearTimeout(timeout);
});

Type Parameters

T

Parameters

executor: Executor<T>

  • a function called every time that an action is evaluated

descoptional: string

Return Type

Operation<T>

an operation that will run according to executor every time it is evaluated