正如标题已经提到的,有没有办法检查变量是否是真正的jqXHR?
我的意思是(想象的):
var resource = $.get('/resource');
if (resource instanceof jqXHR)
{
// do something
}
我试图解决的实际问题是我正在开发的模式插件。
$('#element').modal({
content : function()
{
return $.get('/resource');
}
});
并且,content
变量可以是string
or function
。的情况下string
,它将是静态的,如果function
每次打开模式时都会运行它。
但是,我希望允许content
回调返回jqXHR
or string
。用字符串就很简单了if (typeof returned === 'string')
, 但是关于jqXHR
?
我知道我可以简单地检查string
如果它不是string
,假设它是jqXHR
,但我希望我的插件尽可能强大,并且不允许使用意外类型。
我建议只检查它是否是一个承诺对象。这将使您的代码更加健壮,因为如果用户需要执行更复杂的操作,则可以返回自定义延迟对象,或者只需返回 jqXHR 即可获得相同的效果。
if ($.type(resource) === "string") {
doStuff(resource);
} elseif (resource && resource.promise) {
resource.promise().done(doStuff);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)