process-control

A tool for managing continuous async process by starting, stopping, restarting and disposing

  • 所有者: christianalfoni/process-control
  • 平台:
  • 許可證: MIT License
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

process-control

Set up asynchronous processes that can be started, restarted, stopped and disposed.

This project was created to manage complex rendering logic. It allows you to define several processes that can at any time be
started, stopped, restarted or disposed. When you stop a process its current step will finish, but the next step will not
execute. Think of it as using a promise which by default executes synchronously and can be stopped, restarted and disposed (can not be started anymore).

Big shoutout to Normatic for open sourcing this tool as a thanks to the open source community for its
contributions, allowing Normatic to build great experiences for their customers!

import { Process } from "process-control";

const myProcess = new Process({
  // Automatically dispose when the process reaches its end
  dispose: true
})
  // Do some work and return a value for the next step
  .then(() => 123)
  // Do some work and return a promise to hold further execution
  .then(() => Promise.resolve())
  // Do work in parallel
  .all([() => Promise.resolve(), otherProcess])
  // Compose in an other process instance
  .then(anotherProcess);
  // Return a function that works like a synchronous promise, meaning that
  // calling resolve() will instantly trigger the next step, not on next
  // tick as native promises do
  .then(() => {
    return (resolve, reject) => {}
  })

/*
  Start the process. If you try to start a running process, it will
  stop the current one, and once stopped start again. Returns
  a promise
*/
myProcess.start(optionalValue);

/*
  Stop the process. Current started process promise will throw an exception.
*/
myProcess.stop();

/*
  Restart the process. Stops the current process and then starts when it is stopped.
*/
myProcess.restart(optionalValue);

/*
  Disposes the process. Nothing happens when you try to start it.
*/
myProcess.dispose();

/*
  The state of the process
*/
myProcess.state;

NB! Be careful composing one process into multiple other processes. As one process might try to stop the composed process while the other expects it to do its work!

主要指標

概覽
名稱與所有者christianalfoni/process-control
主編程語言TypeScript
編程語言JavaScript (語言數: 2)
平台
許可證MIT License
所有者活动
創建於2018-10-02 11:45:56
推送於2018-10-16 11:06:28
最后一次提交2018-10-16 13:06:23
發布數0
用户参与
星數17
關注者數1
派生數4
提交數12
已啟用問題?
問題數0
打開的問題數0
拉請求數0
打開的拉請求數1
關閉的拉請求數0
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?