jquery $ .when().then()和.done()之间的区别

Sal*_*ali 27 jquery

我试图了解它们之间的区别

$.when(...).then(...)

$.when(...).done(...)
Run Code Online (Sandbox Code Playgroud)

在jQuery中.据我所知,当内部对象完成加载时,它们都会执行.但有什么区别.实例将非常感激.

Gur*_*ngh 29

.done() 只有成功回调.

.then() 既有成功也有失败的回调.

从jQuery 1.8开始,该deferred.then()方法返回一个新的promise,它可以通过函数过滤延迟的状态和值,替换现在已弃用的deferred.pipe()方法.

deferred.done()方法接受一个或多个参数,所有参数都可以是单个函数或函数数组.

由于deferred.done()返回延迟对象,因此可以将延迟对象的其他方法链接到此.done()方法,包括其他 方法.解析Deferred后,将按照添加顺序使用提供给resolve或resolveWith方法调用的参数执行doneCallbacks.

  • 这不是真的正确.是的,`.then()`有一个方法签名,允许传递失败回调以及成功的回调.更重要的是`.then()`返回一个**new**promise对象,`.done()`返回相同的promise对象.这至少是基本答案.有关更完整的答案,请参阅[此问题](http://stackoverflow.com/questions/5436327/jquery-deferreds-and-promises-then-vs-done)上由Raphael链接到原始问题的答案 (19认同)
  • 一个非常重要的区别是@Anduril在上面评论的内容.使用`then()`你会得到一个新的承诺,所以你可以链接不同的动作.使用此代码可以简化A LOT. (2认同)