$.Deferred() seems to be doing the trick via the implementation below.
function A(input) {
var def = $.Deferred();
asychProcessA(
someCallBack();
def.resolve(someInput);
)
return def.promise();
}
function B(input) {
var def = $.Deferred();
asychProcessB(
someCallBack();
def.resolve(someInput);
)
return def.promise();
}
//Implementation1: Use B() as call back for A()
A(someInput1).done(
function(){
B(someInput2);
}
);
//Implementation1: Use random() as call back for A()
A(someInput1).done(
function(){
random(someInput2);
}
);