Chain jQuery AJAX 承诺与自定义承诺

Chain jQuery AJAX promises with custom ones

我有一个特定的网站,我不能像往常一样依赖 HTTP 状态代码在 AJAX 调用后触发成功或失败。 我采用的一种解决方法是将响应构建为 JSON 对象,该对象具有 "type" 属性,其值为 "success" 或 "error"。

我有一个辅助函数:

function myAjaxCall(data) {
   return $.ajax({method: 'post', url: myUrl, data: data});
}

我想要完成的是使这成为可能:

myAjaxCall(data).then(successFunction, failFunction);

我试过插入这个函数:

function myPromise(response) {
     var d = $.Deferred();
     response.type == 'success' ? d.resolve() : d.reject();
     return d;
}

但我无法想象在代码中插入我的承诺的干净方法。

只需将其与 then 链接起来即可:

function myAjaxCall(data) {
    return $.ajax({method: 'post', url: myUrl, data: data}).then(myPromise);
}

您的 myPromise 函数将接收响应作为其参数,并且 then 对调用结果做出 return 承诺(您 return ).顺便说一句,您可能应该将响应的某些部分传递给 resolve/reject,以便您的 successFunctionfailFunction 可以访问它。不确定您的回答到底是什么样子,但举个例子:

function myPromise(response) {
     var d = $.Deferred();
     response.type == 'success' ? d.resolve(response.data) : d.reject(response.error);
     return d;
}

var myAjaxCall=function(data) { return $.ajax({method: 'post', url: "myUrl", data: data}); } console.log(myAjaxCall("data").responseText()); });请检查您收到请求后的响应文本。然后将其传递给您想要的任何变量或函数。