等待2个AJAX请求完成(d3.js)并优化临时等待?

时间:2013-06-13 20:39:00

标签: ajax d3.js

在运行第一个请求的回调函数RUN_ACTIONS()之前我需要2个ajax请求是complet,但是如何等待它(whit优化临时等待)?

function ajax() {
 d3.tsv( ajaxUrl,
        function(data) {
            while (!secondAJAXQueryComplet());
            RUN_ACTIONS(HEADER, data);
        }
  );
  d3.json( ajaxUrl,
        function(header) {
            define_Header(header);
        }
  );
 }

2 个答案:

答案 0 :(得分:4)

你不这样做,你使用一般的回调概念:

function dostuff(callWhenDone) {
  // ...
  d3.tsv(ajaxUrl, function callWhenTSVCompletes(data) {
    // ...
    d3.json(ajaxUrl, function callWhenJSONCompletes(header) {
      //...
      callWhenDone(); // now we're done.
    });
  });
}

答案 1 :(得分:1)

使用此代码,我同时运行2 AJAX查询并等待最后一个答案,然后再运行我的回调函数RUN_ACTIONS()。但这种方法在我看来并不优雅

function ajax() {
  var ready=false,
      datatsv=false;

  d3.tsv( ajaxUrl,
        function(data) {
            if (ready)
                RUN_ACTIONS(HEADER, data);
            else {
                ready=true;
                datatsv=data;
            }
        }
   );
   d3.json( ajaxUrl,
        function(header) {
            define_Header(header);
            if (ready)
                RUN_ACTIONS(header, datatsv);
            else {
                ready=true;
            }
        }
   );
 }