0

奇妙なバグが発生しているため、同期 ajax 呼び出しが実行順序にどのように適合するかを理解しようとしています。

// (1)
$.ajax({
  async: false,
  url: url0,
  dataType: 'json',
  success: function(data) { 
       // (2)
  });
// (3)

同期 ajax 呼び出しでは、評価の順序が(1)、その後に(2)、そして常にが続くというのは本当(3)ですか? (3)の本体全体の後にのみ実行されることを特に確認したいと思い(2)ます。

4

1 に答える 1

1

はい、しかしこれは正しい方法ではありません。代わりに、(3) のコードを成功ハンドラー (2) に移動します。

それらが同じ効果を達成するかどうかが重要である理由をもう少し説明できますか? (2) が ajax 呼び出しから取得したデータとは何の関係もない場合はどうなるでしょうか?

同期呼び出しは、完了するまでブラウザーのランタイムをブロックします。これは、UI がユーザーに対して完全に無反応であることを意味します。

現在の (2) を (3) から論理的に分離したい場合は、次のように複数の成功ハンドラーをバインドできます。

var d = $.ajax({
  url: url0,
  dataType: 'json'
});
d.success(function() {
  // (2)
});
d.success(function() {
  // (3)
});

それらは順番に実行されます。

于 2013-09-18T09:13:10.987 に答える