2

I need 2 ajax request are complet before run the callback function RUN_ACTIONS() of the first request, but how waiting it ( whit optimize the temp waiting )?

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

2 回答 2

4

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

function dostuff(callWhenDone) {
  // ...
  d3.tsv(ajaxUrl, function callWhenTSVCompletes(data) {
    // ...
    d3.json(ajaxUrl, function callWhenJSONCompletes(header) {
      //...
      callWhenDone(); // now we're done.
    });
  });
}
于 2013-06-13T21:02:40.873 回答
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;
            }
        }
   );
 }
于 2013-06-13T21:40:34.907 回答