我搜索了 jquery 文档,但我找不到一个与 jquery.when() 具有相同目标但需要至少一个延迟才能解决的函数(并非全部像 jquery.when() )才能解决?
最佳答案
我认为 jQuery 的 Promise 实现中没有 .race
,但您可以使用另一个轻量级 Promise 实现(即 promise.js
)来执行此操作:
var one = Promise.resolve($.ajax(/*whatevs*/));
var two = Promise.resolve($.ajax(/*sth else*/));
Promise.race([one,two]).then(function(winner){
// do whatever
});
或者,您也可以使用 Deferred.progress
与 jQuery 中的 .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);
});
关于jquery - jquery 中是否有一个函数,如果至少一个 Deferreds 得到解决,则返回一个 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30638081/