I need to combine the results of 3 MDX requests named mdx1, mdx2 and mdx3 before displaying them.
How do I wait for the 3 processes to complete before calling the display method?
Is it possible to call the executeRequest method synchronously?
Here is the code structure:
executeRequest(new viz.MdxGviRequest(mdx1), {}, function(gviTable) {
// process result1
});
executeRequest(new viz.MdxGviRequest(mdx2), {}, function(gviTable) {
// process result2
});
executeRequest(new viz.MdxGviRequest(mdx3), {}, function(gviTable) {
// process result3
});
// combine result1, result2 and result3 into result
// display result using Google table chart
As icCube is using jQuery here is a possible solution using the when/done feature of jQuery.
var res1_done = $.Deferred();
var res2_done = $.Deferred();
var res2_done = $.Deferred();
var res1, res2, res3;
function onAllResultDone() {
// handle here your results (res1/res2/res3)
}
$.when( res1_done, res2_done, res3_done ).done(function() {
onAllResultDone();
});
executeRequest(new viz.MdxGviRequest(mdx1), {}, function(gviTable) {
res1 = ...;
res1_done.resolve();
});
executeRequest(new viz.MdxGviRequest(mdx2), {}, function(gviTable) {
res2 = ...;
res2_done.resolve();
});
executeRequest(new viz.MdxGviRequest(mdx3), {}, function(gviTable) {
res3 = ...;
res3_done.resolve();
});