在jQuery中获得解决的承诺的更好方法是什么?

时间:2014-08-03 05:59:33

标签: jquery promise deferred

在使用jQuery中的promises进行编程时,我有时需要从已解决的承诺开始,特别是在.then()中的方法#2中所示的循环中data.reduce(function(p, item) { return p.then(function() { return print(item); }); }, $.Deferred().resolve().promise()); 链接时{/ 1}}:

$.Deferred().resolve().promise()

所以,我知道我可以通过以下方式得到解决的承诺:

.reduce()

但是,这似乎有点丑陋和浪费(三个函数调用)。是否有更好的(更少的代码,更少的函数调用)方式来获得jQuery中的解析承诺或更好的方式来编写我的{{1}}循环?

1 个答案:

答案 0 :(得分:3)

对于初学者 - 您不需要.promise。 already also promises因此$.Deferred().resolve()也可以使用。

在我看来,这是jQuery的最佳方法,因为它是明确的,但是它有更短的方法。我所知道的最短的是:

$().promise(); // shorter but more hacky.

$.Deferred().resolve(); // this will work and is what I'd do

$.when(); // this is also a viable alternative 

这是相当短的。当然,最好使用一个更好的promise库,因为jQuery promises不能保证良好的顺序异步执行,并且如果你有许多promises运行,除了非常慢之外不允许错误处理。

当然,没有人阻止你编写一个实用的方法:)