大佬教程收集整理的这篇文章主要介绍了jQuery Deferred:从完成过滤器中拒绝承诺,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
无论如何,我有一个AJAX请求,我想根据响应的内容从完成的过滤器中拒绝:
return doAJAXrequest().then(function (data) { if (data.responseText == "YES") { return doOtherAJAXrequest(); } else { this.reject(data); } });
那没有像我预期的那样工作
Uncaught TypeError: Object #<Object> has no method 'reject'
function foo() { return doAJAXrequest().then(function (data,textStatus,jqXHR) { if (data.responseText == "YES") { return doOtherAJAXrequest(data); } else { return $.Deferred().reject(jqXHR,data,'Not YES').promise(); } }); )
在这里,如果data.responseText!==“YES”在一定程度上模拟(一部分)失败的ajax请求,同时仍然允许数据传递,则返回。这对于下游的.fail()处理程序来说很重要,它必须处理两个真正的ajax失败和转换成功条件,而不用知道哪一个发生,直到它读取errorThrown。
foo().fail(function(jqXHR,errorThrown) { if(errorThrown == 'Not YES') { //transmogrified success var data = textStatus; ... } else { //genuine ajax failure ... } });
以这种方式传递数据通常更容易,而不是从jqXHR对象重新获取数据。这对于JSON编码数据尤其如此,否则需要在失败处理程序中再次对其进行解码。
以上是大佬教程为你收集整理的jQuery Deferred:从完成过滤器中拒绝承诺全部内容,希望文章能够帮你解决jQuery Deferred:从完成过滤器中拒绝承诺所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。