2011-06-24 9 views
1

私はAndroidのPhoneGapアプリをjQueryを使って持っています。場合によっては、$ .postを非同期的に使用して大量のデータをアップロードする必要があるため、データはバックグラウンドで送信されます。それは正常に動作しますが、接続が遅くなると時間がかかります。他の非同期AJAX呼び出しを起動すると、最初の呼び出しが中止されることがわかりました。実行中の非同期AJAX呼び出しを検出し、別の呼び出しをjQueryのキューに入れる方法は?

進行中の非同期AJAXがあるかどうかを検出する方法がありますか?YESの場合、別の非同期AJAX呼び出しをキューに入れて最初の呼び出しが終了したときに開始する方法よりも方法がありますか?

+1

最初の成功コールバック関数で2番目のajax呼び出しを入れることはできませんか? – Ben

+0

それは私の最初の考えでしたが、私の状況ではそれは可能ではないので、私は存在するならば、別の解決策を探しています。 – Frodik

+0

は[jQuery.queue()](http://api.jquery.com/queue/)に対応していませんか? – leon

答えて

1

もう1つのオプションは、jqXHRオブジェクトへの参照を保存することです。次に、completeメソッドを呼び出して、完了しているかどうかを確認します。

var jqXHR = $.post(url,data,function() 
{ 

}); 

if(jqXHR.complete()) 
{ 
    //do second call 
} 

上記のすべては、あなたがこの上で動作し、タイマーを追加することができmanページhttp://api.jquery.com/jQuery.post/

に議論されています。その後、それが完了していない場合は、数秒間タイマーを設定し、まだ完了していないか再度確認してください。

0

進行中の非同期AJAX要求を検出する場合、呼び出しが開始されたときにある値で初期化され、呼び出しが終了したときに別の値に設定される変数を使用できます。

2番目の部分では、その特定の変数が設定されていない場合は、 'ajaxComplete'イベントのハンドラで処理するキューに関数呼び出しを追加します。代わりに、それらの行に沿って何かを行う.complete()経由でコールバックを渡します。

関連する問題