正如标题已经提到的,有没有办法检查一个变量是否是真正的 jqXHR?
我的意思是(虚构的):
var resource = $.get('/resource');
if (resource instanceof jqXHR)
{
// do something
}
我试图解决的实际问题是针对我正在处理的模态插件。
$('#element').modal({
content : function()
{
return $.get('/resource');
}
});
并且,content
变量可以是string
或function
。如果是 string
,它将是静态的,如果是 function
,它将在每次打开模式时运行。
但是,我希望允许 content
回调返回 jqXHR
或 string
。对于字符串,它非常简单,if (typeof returned === 'string')
,但是 jqXHR
呢?
我知道我可以简单地检查 string
,如果它不是 string
,假设它是 jqXHR
,但我想要我的插件尽可能强大,并禁止使用意外类型。
最佳答案
我建议只检查它是否是一个 promise 对象。这将使您的代码更加健壮,因为如果用户需要执行更复杂的操作,他们可以返回自定义延迟对象,或者他们可以简单地返回 jqXHR 以获得相同的效果。
if ($.type(resource) === "string") {
doStuff(resource);
} elseif (resource && resource.promise) {
resource.promise().done(doStuff);
}
关于javascript - 有什么方法可以检查变量是否是真正的 jqXHR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14587373/