task-flow-rollback
v1.0.1
Published
task rollback when flow catch error
Downloads
6
Readme
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
参数对应的值。