Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查对象是否为jQuery Xhr对象_Javascript_Jquery - Fatal编程技术网

Javascript 如何检查对象是否为jQuery Xhr对象

Javascript 如何检查对象是否为jQuery Xhr对象,javascript,jquery,Javascript,Jquery,基本上,我想检查一个对象是否是jQuery XHR(jqXHR——比如由.ajax()请求返回的)——而不仅仅是一个常规的延迟对象 我已尝试检查它是否是$.Deferred的实例,因此略有不同: xhrObj instanceOf $.Deferred //false 我在文档或代码中没有看到它是什么构造函数。。。无论如何都要这样做吗?您可以检查延迟应该具有的任何属性,例如done,fail,始终,状态,等等 done似乎是延迟对象应该具备的(承诺也具备),这在其他jQuery对象

基本上,我想检查一个对象是否是jQuery XHR(jqXHR——比如由.ajax()请求返回的)——而不仅仅是一个常规的延迟对象

我已尝试检查它是否是$.Deferred的实例,因此略有不同:

xhrObj instanceOf $.Deferred       //false

我在文档或代码中没有看到它是什么构造函数。。。无论如何都要这样做吗?

您可以检查延迟应该具有的任何属性,例如
done
fail
始终
状态
,等等

done
似乎是延迟对象应该具备的(承诺也具备),这在其他jQuery对象中并不常见

var def = new $.Deferred();

if ('done' in def)
并检查这是否是一个承诺

var ajax = $.ajax({
    url : 'something'
})

isPromise = 'abort' in ajax;

@JonathanLonowski但是xhrObj是延期的,不是一个承诺吗?请澄清。您想知道它是promise对象还是jqXHR。jqXHR是一个promise对象,但并非所有promise对象都是jqXHR对象deferred@EvanHobbs然后您应该检查
getAllResponseHeaders
方法imho@A.Wolff谢谢这也是我得出的结论,不过还是和SetRequestHeaders一起谢谢!我正在使用您的方法,但我想知道它是否是jqXHR,而不仅仅是一个普通的延迟美元(我想我在我的问题中不清楚)。。。我决定检查setRequestHeader,因为jqXHR有它,但普通的承诺没有。我认为你的答案是正确的,尽管你可能想稍微更新一下答案。@EvanHobbs-是的,类似的东西应该会起作用,它似乎也有“中止”的承诺,而延期则没有?是的,但目的是告诉你它是否是一个jqXHR,而不仅仅是一个正常的延期。如果它有'done'、'fail'、'always'等,则它是一个延迟的,但不一定是一个带有附加属性的延迟jqXHR。这就是为什么我建议像“setRequestHeaders”这样的东西,只有JQXHR才有