jQuery延迟和承诺-.then()与.done()的比较

我一直在读关于jQuery延迟和承诺的文章,我看不出使用.then()&amp.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()也是如此

发表评论