1

私のコードでは、関数が非同期かどうかをテストし、非同期の場合はコールバック関数を使用したいと考えています。しかし、そうでない場合は、次の関数を手動で呼び出すだけです。関数が非同期かどうかをテストする方法はありますか? そうでない場合、すべての非同期 jQuery 関数のリストはどこにありますか?

if (isAsynchronous(fn)) {
  args.push(function () { alert('callback!'); });
  this.fn.apply(this, args);
} else {
  this.fn.apply(this, args);
  alert('synchronous');
}

それが不可能な場合は、リストを作成することが次善の策です。

var asynchs = {
  animate: true,
  fadeIn: true
  //etc...
};

if (asynchs[fn]) {
  args.push(function () {alert('callback!'); });
  this.fn.apply(this, args);
} else {
  this.fn.apply(this, args);
  alert('synchronous');
}
4

1 に答える 1

2

関数が同期か非同期かをプログラムで判断する方法はありません。実際、渡される内容に応じて、関数が同期または非同期になる可能性があります。Like$.ajax()には、それがどれであるかを決定するパラメーターを渡すことができます。

したがって、関数が何であるかを知りたい場合は、ドキュメントまたはコードを読む必要があります。

一般に、関数が「完了」コールバックなどを提供する場合は、おそらく非同期であるか、非同期オプションがあると思われ、ドキュメントを調べて確認する必要があります。jQuery メソッドに完了コールバックがない場合、おそらく非同期ではありません。

$.each()コールバックを実装の一部として使用するだけで (「完了」コールバックではありません)、非同期ではありません。

また、アニメーションやネットワークを実行したり、一定時間待機したりするメソッドは、おそらく非同期であると考える必要があります。jquery のドキュメントは非常によく書かれているので、よくわからない場合でも簡単に調べることができます。

于 2012-08-31T06:21:44.437 に答える