Skip to content

Instantly share code, notes, and snippets.

@hex13
Last active August 23, 2022 23:37
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 hex13/599221f3febcbcf3910fbc7239efa25f to your computer and use it in GitHub Desktop.
Save hex13/599221f3febcbcf3910fbc7239efa25f to your computer and use it in GitHub Desktop.
// emulation of Go's defer in JS
// helper function
const makeDefer = () => {
const deferred = [];
return {
defer(f) {
deferred.unshift(f);
},
done(result) {
deferred.forEach(f => f());
return result;
}
}
}
//---- usage---------------
function compute(x) {
const { defer, done } = makeDefer();
const result = {doubled: 0, incremented: 0};
defer(() => {
console.log("incremented");
result.incremented = x + 1;
});
defer(() => {
console.log("doubled");
result.doubled = x * 2;
});
console.log("compute");
return done(result);
}
console.log(compute(123));
/*
console output:
compute
doubled
incremented
{ doubled: 246, incremented: 124 }*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment