我搜索了jquery文档,但我找不到一个与jquery.when()具有相同目标的函数但需要至少一个延迟解析(并不是所有像jquery.when())才能解决?
答案 0 :(得分:2)
我不认为jQuery的承诺实现中存在.race
,但您可以使用另一个轻量级承诺实现(即promise.js
)来执行此操作:< / p>
var one = Promise.resolve($.ajax(/*whatevs*/));
var two = Promise.resolve($.ajax(/*sth else*/));
Promise.race([one,two]).then(function(winner){
// do whatever
});
或者你也可以在jQuery中使用Deferred.progress
和.notfiy
(虽然这感觉非常尴尬):
var one = $.Deferred(function(dfd){
setTimeout(function(){
dfd.notify('foo');
dfd.resolve('foo');
}, 200);
});
var two = $.Deferred(function(dfd){
setTimeout(function(){
dfd.notify('bar');
dfd.resolve('bar');
}, 100);
});
$.when(one, two).progress(function(oneNotification, twoNotification){
console.log(oneNotification, twoNotification);
}).then(function(oneResult, twoResult){
console.log(oneResult, twoResult);
});