我知道 Deferred.done(a).fail(b) 与 Deferred.then(a,b) 相同,除了它们的语法,但我想知道是否有首选的语法方式。
为什么我要使用其中一个?有最佳实践吗?我现在唯一能想到的论点是,如果我在 .done(a).fail(b) 情况下遇到失败函数 'b',当我看到 fail( b),而当我在 then(a,b) 情况下只看到 b 时,我看不到这一点。还有什么论据吗?
我知道 Deferred.done(a).fail(b) 与 Deferred.then(a,b) 相同,除了它们的语法,但我想知道是否有首选的语法方式。
为什么我要使用其中一个?有最佳实践吗?我现在唯一能想到的论点是,如果我在 .done(a).fail(b) 情况下遇到失败函数 'b',当我看到 fail( b),而当我在 then(a,b) 情况下只看到 b 时,我看不到这一点。还有什么论据吗?
当您有多个任务要完成或失败时,请使用 Deferred.then(a,b)。
例如
$.when(task1)
.then(task2, task1Failure)
.then(task3, task2Failure)
.fail(task3Failure);
或者
$.when(task1)
.then(task2, task1Failure)
.then(task3, task2Failure)
.then(task3SuccessMeaningAllSuccess, task3Failure);
.done(a).fail(b)
是一种更语义化的方法,所以我就这么做了。