javascript - 有什么方法可以检查变量是否是真正的 jqXHR?

标签 javascript jquery

正如标题已经提到的,有没有办法检查一个变量是否是真正的 jqXHR?

我的意思是(虚构的):

var resource = $.get('/resource');

if (resource instanceof jqXHR)
{
    // do something
}

我试图解决的实际问题是针对我正在处理的模态插件。

$('#element').modal({
    content : function()
    {
        return $.get('/resource');
    }
});

并且,content 变量可以是stringfunction。如果是 string,它将是静态的,如果是 function,它将在每次打开模式时运行。

但是,我希望允许 content 回调返回 jqXHRstring。对于字符串,它非常简单,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/

相关文章:

javascript - 为什么我的路线无法使用 UI.Router 工作?

javascript - 选择不适用于模态的选项

javascript - JS/jQuery/CSS --- 用其中任何一个改变元素的水平顺序?

javascript - 正则表达式匹配方括号内的方括号谷歌电子表格

javascript - iPhone视口(viewport)困惑/window.innerHeight

jquery - 全页幻灯片无限滚动

jquery - 如果回调可能需要拒绝延迟对象,我可以手动解析它吗?

jquery - 如何测试 jQuery 是否隐藏了某些内容?

javascript - 如何获取 iFrame 的完整 HTML 内容?

javascript - 单击跨度内的隐藏文件输入会导致 RangeError