检查变量是否是真正的 jqXHR 的任何方法

Any way to check whether a variable is a real jqXHR?

本文关键字:jqXHR 方法 任何 变量 是否是 检查      更新时间:2023-09-26

正如标题已经提到的,有没有办法检查变量是否是真正的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,但我希望我的插件尽可能强大,并且不允许使用意外类型。

我建议只检查它是否是一个承诺对象。这将使您的代码更加健壮,因为如果用户需要执行更复杂的操作,他们可以返回自定义延迟对象,或者他们可以简单地返回 jqXHR 以获得相同的效果。

if ($.type(resource) === "string") {
    doStuff(resource);
} elseif (resource && resource.promise) {
    resource.promise().done(doStuff);
}