1
私はAJAX POST関数を持っています。私は成功したコールバックを取得し、次に関数を実行したい。私はopenWindow()
後$.when
success
var url = '/echo/html/';
var json_text = ' ';
var FireOrderCounter = 0;
$.when(
$.ajax({
type: 'POST',
url: url,
data: json_text,
success: function() {
FireOrderCounter++;
alert('successfully completed Action ' + FireOrderCounter);
var millisecondsToWait = 5000;
setTimeout(function() {
FireOrderCounter++;
alert('Done Spinnin ' + FireOrderCounter);
}, millisecondsToWait);
},
dataType: 'html'
})
).then(openWindow());
function openWindow() {
FireOrderCounter++;
alert('opened window' + FireOrderCounter);
}
followsとしてコールバック火災でこれを達成することを選びました。これは、
$.ajax
が何らかの形で延期されておらず、
$.when
がAPIに記載されているように単純にであることを意味しますか?
単一引数がjQuery.whenに渡され、それが遅延 ない場合、これは簡略化されたテストケースで解決
として扱われます。プロダクションコードも同様に失敗します。すべてのデータを取得するには、このイベントを2回実行する必要があります。競合状態があります。
処理を停止するためにブレークポイントを挿入できます。私はまだデバッガを持っている間、ファンクションが起動します。だから、成功コールバックを待っていません。短いタイムアウト(約10秒後に発生)?これをどうすれば解決できますか?
+1これはテストケースを修正します。匿名関数を追加した後も、私はまだプロダクションバージョンに競合条件があります。データの〜20%しかレポートに反映されません。 –
私のコードはデバッガを待っています。なぜ私はレポートのすべてのデータを取得していないのか分からないが、無関係なものが間違っていると思う。 –