假设我有打算采取由服务器返回的响应,并把它变成别的东西的功能fancyParse
。如果响应没有任何意义,或者设置了特殊的“内部错误”标志,则此函数会抛出。最简单的方式后处理jQuery ajax请求的结果?
我想将此功能链接到$.post
调用以获得新的Deferred
。如果请求失败,或者如果fancyParse
抛出,这个新的延迟将失败。如果请求成功,fancyParse
成功,它会成功,重要的是,将通过的fancyParse
其成功回调的结果。
完美的解决方案将是这个样子:
$.post('/url', etc).postprocess(fancyParse)
.done(my_done_handler)
.fail(my_fail_handler);
是这样已经上市,或者我需要写一个这样的postprocess
自己?
的文档没有说明这一点,但也许你知道:做过滤功能异常导致请求被视为失败? –
对不起,我不知道。但是,为什么你不捕获异常,然后从你的后处理器中调用错误处理程序? – jbasko
因为除了调用错误处理函数外,还有更多。我还需要'Deferred'成为*被拒绝*,以便随后添加的任何错误处理程序也被调用。 –