2

最初のリクエストのコールバック関数 RUN_ACTIONS() を実行する前に、2 つの ajax リクエストが完了している必要がありますが、どのように待機していますか (一時待機を最適化します)?

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 に答える