task-flow-rollback

1.0.1 • Public • Published

Task Flow Rollback

一套任务流的物理回滚框架。用来处理所有类型的回滚。我们可以通过定义reject方式来自动处理这个整个流程的回滚,保证流程的完整性。

Install

npm install --save task-flow-rollback

Usage

import Task from 'task-flow-rollback';
const task = new Task();

Pipe

创建一个任务流。支持同步与异步两种模式。

异步模式

task.pipe(async (value, rejected) => {
    await new Promise((resolve, reject) => {
        fs.writeFile('./test.json', JSON.stringify({ a: 1 }), err => {
            if (err) return reject(err);
            resolve();
        });
    })
    rejected(async () => {
        fs.unlink('./test.json', err => {
            if (err) throw new Error(err);
        });
    });
    return true;
});
// ... 这里可以写更多pipe流程
task.pipe(async value => {
    console.log('I will throw an error', 'and last value is:', value);
    throw new Error('error');
})

同步模式

task.pipe((value, reject) => {
    fs.writeFileSync('./test.json', JSON.stringify({ a: 1 }));
    reject(() => fs.unlinkSync('./test.json'));
    return true;
});
// ... 这里可以写更多pipe流程
task.pipe(value => {
    console.log('I will throw an error', 'and last value is:', value);
    throw new Error('error');
})

reject

示例中reject参数是一个回滚函数,没有任何的参数。需要参数,可以从上级闭包作用域拿到。

Notice

注意:pipe方法可以使用链式写法。上一个pipe flow返回值将是下一个的value参数对应的值。

Readme

Keywords

Package Sidebar

Install

npm i task-flow-rollback

Weekly Downloads

2

Version

1.0.1

License

MIT

Last publish

Collaborators

  • evio