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 回答