Skip to content

Instantly share code, notes, and snippets.

@mfbx9da4
Created July 19, 2021 11:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mfbx9da4/ea7ae7fbb3d5a681b71cd55087b2055e to your computer and use it in GitHub Desktop.
Save mfbx9da4/ea7ae7fbb3d5a681b71cd55087b2055e to your computer and use it in GitHub Desktop.
const wait = () => new Promise((r) => setTimeout(r, 10));
const fakeDbOp = async () => {
console.log("fakeDbOp");
await wait(10);
return 1;
};
const fakeTrxDbOp = async () => {
console.log("fakeTrxDbOp");
await wait(10);
return 2;
};
const f = () => {
let catchHandler;
let finallyHandler;
const then = (fn) => {
fakeDbOp()
.then((x) => fn(x))
.catch((e) => {
if (catchHandler) catchHandler(e);
})
.finally(() => {
if (finallyHandler) finallyHandler(e);
});
};
const trx = () => fakeTrxDbOp();
return {
then,
catch: (fn) => {
catchHandler = fn;
},
finally: (fn) => {
finallyHandler = fn;
},
trx,
};
};
const main = async () => {
const a = await f();
console.log("a", a);
const b = await f().trx();
console.log("b", b);
};
main();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment