使用jQuery Deferred.done()。fail()或Deferred.then()?

时间:2012-08-07 08:28:50

标签: jquery jquery-deferred

我知道Deferred.done(a).fail(b)与Deferred.then(a,b)相同,除了它们的语法之外,但我想知道是否有一种首选的语法方式。

为什么我会使用一个而不是另一个?有最好的做法吗? 我现在唯一可以提出的论点是,如果我在.done(a).fail(b)情况下遇到失败函数'b',我立即知道它是一个当我看到失败时失败功能(b),而我当我在当时(a,b)情况下看到b时看到它。还有其他论点吗?

2 个答案:

答案 0 :(得分:3)

当您有多个任务要完成或失败时,请使用Deferred.then(a,b)。

e.g。

$.when(task1)
.then(task2, task1Failure)
.then(task3, task2Failure)
.fail(task3Failure);

$.when(task1)
.then(task2, task1Failure)
.then(task3, task2Failure)
.then(task3SuccessMeaningAllSuccess, task3Failure);

答案 1 :(得分:-1)

.done(a).fail(b)是一种更加语义化的方法,所以我会这样做。