Javascript同步请求到icCube
Javascript synchronous request to icCube
在显示之前,我需要合并名为 mdx1、mdx2 和 mdx3 的 3 个 MDX 请求的结果。
如何等待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
如果你有jquery,你可以使用我们when
and done
。所以,只需将 executeRequest
放在 when
中,然后将结果合并到 done
中。
由于 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();
});
在显示之前,我需要合并名为 mdx1、mdx2 和 mdx3 的 3 个 MDX 请求的结果。
如何等待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
如果你有jquery,你可以使用我们when
and done
。所以,只需将 executeRequest
放在 when
中,然后将结果合并到 done
中。
由于 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();
});