Bar*_*s41 5 javascript ajax jquery
我正在编写一个 ajax 队列,我想确保函数的类型(来自对象)实际上是一个 ajax 请求,以便 .done/.fail/.always 可以被调用。我怎样才能做到这一点?
我想确保函数的类型(来自对象)实际上是一个 ajax 请求,以便 .done/.fail/.always 可以被调用。
jQuery ajax 请求对象 ( jqXHR) 不是函数。在 jQuery v1.12.0(我可以方便地检查的版本)中,它们是添加了属性的普通对象(例如,没有特殊的构造函数),因此您无法使用instanceof它们来查看它们是否是jqXHR对象。
您可以测试done, fail, 和/或always是否存在于您获得的对象上:
if (obj.done && obj.fail && obj.always) {
// It's probably a jqXHR
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您想更彻底,您可以确保它们是函数:
if (typeof obj.done == "function" &&
typeof obj.fail == "function" &&
typeof obj.always == "function") {
// It's probably a jqXHR
}
Run Code Online (Sandbox Code Playgroud)
这是“鸭子打字”的一个例子:它像鸭子一样嘎嘎叫,所以我们假设它是一只鸭子。
如果您想真正将其限制为jqXHR对象而不是具有这些功能的其他事物,则可以检查它们具有的其他功能/属性,例如getAllResponseHeaders等等。