3

このような複数の xhr リクエストを処理する方法はありますか? 1つxhrの場合、関数が組み込まれていますが、複数のリクエストの場合は?

4

3 に答える 3

6

dojo.xhr は dojo.Deferred を返します。Deferred はコールバックなどのラッパーです。したがって、あなたの場合の重要な機能は dojo.xhr({parameters}) になります。then(callbackFunction) .

多くの場合、ポーリングとカウンターの簡単なショートカットによって並列 XHR を実現したいと考えていますが、Dojo もこれを実現しています。Craig が DeferredList に通知しているように、

XHR を 2 回起動し、各呼び出しがハンドラーを返し、それらを参照します。これらの参照を引数として配列に集めたリストを作成します。次に、最後の仕上げとして、リストに「then」呼び出しを追加します。

var dXhr1 = dojo.xhrGet({ url: ... });
var dXhr2 = dojo.xhrGet({ url: ... });
var dList = new dojo.DeferredList([dXhr1, dXhr2]);
dList.then(function(arrayOfValues) { 
    var res = "Result: succes?+"arrayOfValues[0][0].toString()+":"+arrayOfValues[0][1]+", "+
    succes?+"arrayOfValues[1][0].toString()+":"+arrayOfValues[1][1]+";
console.log(res);
});

または連鎖

new dojo.DeferredList([
     dojo.xhrGet({ url: ... }),
     dojo.xhrGet({ url: ... })
]).then(function(res) { console.log(res); });
于 2012-07-04T16:33:45.520 に答える
4

ADeferredListはあなたが必要とすることをします。

http://dojotoolkit.org/reference-guide/1.7/dojo/DeferredList.html

于 2012-07-04T14:08:52.930 に答える
1

内部カウンターを持つ関数にヒットするコールバックを起動できませんでしたか?そのカウンターが2に達すると、両方のコールバックが完了しましたか?

于 2012-07-04T14:06:47.577 に答える