Reputation: 329
It is possible to determine the order of TWO tasks using callbacks, as shown below.
a(b);
function a(callback) {
// do something
callback();
}
function b() {
// do next
}
See Fiddle
First do a()
, then do b()
.
I would like to concatenate more than two tasks. As I´m dealing with quite big functions, I´m looking for something like that:
a(b(c));
First do a()
, then do b()
, then do c()
.
However I'm not successful with this. See Fiddle
Is there an easy way to do so, maybe without needing Promises?
Upvotes: 0
Views: 37
Reputation: 664164
You're calling b
immediately, not passing a callback to a
. You'll need to use a function expression:
a(function(aResult) {
b(c);
});
Of course, you can avoid these by returning closures from all your functions:
function a(callback) {
return function(args) {
// do something
if (callback) callback(res);
};
}
function b(callback) {
return function(aResult) {
// do next
if (callback) callback(res);
};
}
function c(callback) {
return function(bResult) {
// do next
if (callback) callback(res);
};
}
which you would call like this:
a(b(c())();
(this is known as pure continuation passing style)
Upvotes: 1