1

在显示它们之前,我需要组合名为 mdx1、mdx2 和 mdx3 的 3 个 MDX 请求的结果。

如何在调用 display 方法之前等待 3 个进程完成?

是否可以同步调用 executeRequest 方法?

下面是代码结构:

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
4

2 回答 2

1

由于 icCube 正在使用 jQuery,因此这里是使用 jQuery 的 when/done 功能的可能解决方案。

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();
});
于 2015-07-06T08:07:26.130 回答
0

如果你有 jquery,你可以使用 wewhendone. 因此,只需将它们放入其中executeRequest并将when结果合并到done.

于 2015-06-30T21:39:47.267 回答