Javascript return 从函数引用 jqXHR

Javascript return reference to jqXHR from function

最近我使用 $.post() 方法将一堆 AJAX 调用抽象为一个函数。我的想法是使用由 $.post() 编辑的 jqXHR 对象 return 添加标准错误处理程序等(通过 .fail() .done() .always())到删除代码重复。然后我想我可以 return 从方法到原始调用函数的 jqXHR 对象,这样我就可以添加额外的处理程序来做更多特定于上下文的事情。

但是,jqXHR 对象 returned 似乎是原始对象的副本,而不是对象本身。因此,它的状态永远不会被原始调用更新,所以 none 我的附加 .done() 函数得到执行。

在JS中可以return引用一个对象吗?我有 C++ 背景,那么有没有办法模仿 JS 中的 "return pointer to object" 功能?

我知道这里有关于 pass-by-reference/value 的讨论,但我找不到专门处理 Deferred 对象的讨论

编辑:示例代码

function AJAX(url,data,onSuccess) {
    var jqxhr = $.post({url,data});
    jqxhr.done(onSuccess);
    jqxhr.fail(displayError());
    return jqxhr;
}
...
function example() {
    var dfrd = AJAX("example.php",data,successFunc);
    dfrd.done(alert("Hello, World!"));
}

AJAX 函数中的 .done().fail() 可以正常执行,但是 example() 中的 .done() 永远不会执行,因为 dfrd.state()总是 pending

原来这是时间问题。

看来,对于多个 .done() 函数,当函数收到来自 $.post() 调用的响应时,会有轻微的延迟。所以传递给 AJAX 函数的 onSuccess(resp) {} 将在 alert() 之后执行。我用来测试的特定 onSuccess 函数中有一个页面刷新调用,它会在我看到它之前关闭警报。

我有C++背景,所以我想我需要升级我的JS测试程序。

感谢所有评论的人!