在使用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}}循环?
答案 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运行,除了非常慢之外不允许错误处理。
当然,没有人阻止你编写一个实用的方法:)