我一直在读关于jQuery延迟和承诺的文章,我看不出使用.then()&.done()用于成功回调。我知道Eric Hynds提到.done()和.success()映射到相同的功能,但我猜也是如此。然后()因为所有回调都是在成功操作完成后调用的
谁能告诉我正确的用法吗
解析延迟后,将触发附加到done()的回调。当拒绝延迟请求时,将触发附加到fail()的回调
在jQuery 1.8之前,then()只是语法上的糖分:
承诺。然后(doneCallback,failCallback)
//相当于
promise.done(doneCallback).fail(failCallback)
从1.8开始,then()是pipe()的别名,并返回一个新的承诺,有关pipe()的更多信息,请参阅此处
success()和error()仅在调用ajax()返回的jqXHR对象上可用。它们分别是done()和fail()的简单别名:
jqXHR.done==jqXHR.success
jqXHR.fail==jqXHR.error
另外,done()不仅限于单个回调,而且会过滤掉非函数(尽管1.8版中有一个字符串错误,应该在1.8.1中修复):
//这将把fn1到7添加到延迟的内部回调列表中
//(正确,56和“omg”将被忽略)
承诺完成(fn1、fn2、真、[fn3、[fn4、56、fn5],“天哪”,fn6、fn7);
fail()也是如此