私は以下のシナリオを持っています:キューに入れたり、Javascriptで複数のAJAXリクエストを許可しますか?
ユーザーはコントロールをページにドラッグアンドドロップすることができます。 「落下」クライアント側のイベントはそうのようなajaxRequestをinitaties:今すぐ
function OnClientDropping(sender, eventArgs) {
var sourceItem = eventArgs.get_sourceItem();
var droppedID = eventArgs.get_htmlElement().id;
if (droppedID.indexOf("RadDockZone") != -1) {
if ($find(droppedID).get_docks().length == 0) {
var eventData = {};
eventData["sourceItemText"] = sourceItem.get_text();
eventData["sourceItemValue"] = sourceItem.get_value();
eventData["listBoxID"] = sender.get_id();
$find(ajaxManagerID).ajaxRequestWithTarget(droppedID, $.toJSON(eventData));
}
}
、このajaxRequestが処理している間、ユーザーはまだ彼らのマウスを完全に制御を持っています。このイベントがまだ処理されている間、他のコントロールをページにドラッグ&ドロップすることは珍しいシナリオではありません。
現在のところ、最初のイベントがキャンセルされ、2番目のイベントが正常に実行されます。私はこれらのイベントをどのように待ち行列に入れることができるのだろうと思っていましたか
"$ .queue($ find(ajaxManagerID).....)"に上記のコードを単にラップしようとしましたが、私のプロジェクトの実行方法に変更はありません。
このシナリオをサポートする適切な方法は何ですか?あなただけの配列にユニークIDとdockZoneIDを追加すると、関連のAjaxリクエストが完了しますと、配列から各項目を削除しないのはなぜ
if (queue.length == 0) {
queue.push(uniqueDockZoneID);
queue.push(eventData);
$find(ajaxManagerID).ajaxRequestWithTarget(uniqueDockZoneID, $.toJSON(eventData));
}
else {
queue.push(uniqueDockZoneID);
queue.push(eventData);
}
function endRequest(sender, eventArgs) {
if (queue.length > 0) {
queue.shift(); //Remove the ID of the control we just finished.
queue.shift(); //Remove the data for the control we just finished.
}
//If we've got more ajax requests queued up.
while (queue.length > 0) {
uniqueDockZoneID = queue.shift();
data = queue.shift();
$find(ajaxManagerID).ajaxRequestWithTarget(uniqueDockZoneID, $.toJSON(data));
}
}
申し訳ありませんが、私の例は悪いと思います。コードを少し編集してみましょう。私は1つのajaxRequestで2つの項目を更新しようとしていません。後で独立したアイテムによって関数全体が再び呼び出されています。 –
まだ配列を使用して保留中のリクエストを管理できると思う –
おそらく私は混乱しています。スコープ外の配列を格納し、dropIDを配列に格納し、配列から最初の要素をポップした後にajax要求を実行することをお勧めしますか?この目的のためにjQueryのfxキューが作成されたような気がしますか?私はこのキューにajaxリクエストをプッシュできるはずですか? –