このような複数の xhr リクエストを処理する方法はありますか? 1つxhr
の場合、関数が組み込まれていますが、複数のリクエストの場合は?
質問する
1309 次
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 に答える