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?
已存档?
是复刻?
已锁定?
是镜像?
是私有?