简体   繁体   中英

Javascript synchronous request to icCube

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();
});

If you have jquery, you can use we when and done . So, just put those executeRequest 's inside when and combine the results in done .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM