Skip to content

Instantly share code, notes, and snippets.

@kriskowal
Created September 23, 2010 03:56
Show Gist options
  • Save kriskowal/593066 to your computer and use it in GitHub Desktop.
Save kriskowal/593066 to your computer and use it in GitHub Desktop.
var callbacks = Array.prototype.forEach.call(
"abcdefg",
function (letter) {
// or some expensive computation
return letter;
}
);
return callbacks.reduceRight(function (otherwise, callback) {
var letter = callback();
if (letter === "h") {
return letter;
} else {
return otherwise();
}
}, function () {
throw new Error("Can't find H");
});
A->B->C->D->E->F->G->otherwise
| | | | | | |
v v v v v v v
a b c d e f g
@electrichead
Copy link

This was linked from the Q library examples. I'm not really sure how this solves the problem of breaking out of a promise chain. Can you explain?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment