jQuery - 有没有办法测试函数是否异步?

时间:2012-08-31 06:13:53

标签: javascript jquery asynchronous

在我的代码中,我想测试函数是否是异步的,如果是,则使用它的回调函数。但如果没有,那么我将手动调用下一个函数。那么有没有办法测试函数是否是异步的?如果没有,那么我在哪里可以找到所有异步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');
}

1 个答案:

答案 0 :(得分:2)

没有编程方法来确定函数是同步还是异步。实际上,函数可以是同步函数,也可以是异步函数,具体取决于函数的传递方式。像$.ajax()一样可以传递一个参数来确定它是什么。

因此,如果您想知道函数是什么,您必须阅读文档或代码。

通常,如果函数提供“完成”回调或类似的东西,那么您应该怀疑它可能是异步的或具有异步选项并查看文档以确认。如果jQuery方法没有完成回调,那么它可能不是异步的。

$.each()之类的其他内容只是使用回调作为其实现的一部分(它们不是“完成”回调)并且不是异步的。

您还应该怀疑任何执行动画或网络或等待一段时间的方法可能都是异步的。 jquery doc的编写得非常好,所以如果你不确定的话,快速查看通常是非常简单的。