1.0.0 • Published 5 years ago
lil-saga v1.0.0
Lil' Saga
lil-saga
is a small library to assist in use of the saga pattern.
Usage
lil-saga
accepts a generator which may yield a Saga
, a Promise
, or an array containing a mix of Saga
s and Promise
s.
If an array is yielded, the actions (and any subsequent rollbacks), will be performed concurrently.
If an error occurs during execution, any previously executed Saga
s will have their undo
performed, in reverse order of execution.
Example
import lilSaga from 'lil-saga';
await lilSaga(function*() {
let promiseYieldingFunctionResult = yield promiseYieldingFunction();
let anotherPromiseYieldingFunctionResult = yield {
do() {
return anotherPromiseYieldingFunction();
},
undo() {
return anotherPromiseYieldingFunctionReverse();
}
};
let [
thing1,
thing2,
thing3
] = yield [
doThing1(),
{
do: () => doThing2(),
undo: () => undoThing2()
},
doThing3()
];
});
1.0.0
5 years ago