【问题标题】:Javascript synchronous request to icCube对 icCube 的 Javascript 同步请求
【发布时间】:2015-06-30 21:29:41
【问题描述】:

我需要合并 3 个名为 mdx1、mdx2 和 mdx3 的 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

【问题讨论】:

    标签: javascript iccube iccube-reporting


    【解决方案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();
    });
    

    【讨论】:

      【解决方案2】:

      如果你有 jquery,你可以使用我们 whendone。因此,只需将那些executeRequest 放入when 并将结果合并到done 中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-14
        • 2015-06-29
        • 1970-01-01
        • 2015-07-10
        • 1970-01-01
        • 1970-01-01
        • 2023-04-09
        • 1970-01-01
        相关资源
        最近更新 更多