jquery - jquery 中是否有一个函数,如果至少一个 Deferreds 得到解决,则返回一个 promise ?

标签 jquery

我搜索了 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
});

参见MDN docspromise.js

或者,您也可以使用 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/

相关文章:

javascript - 将相同的处理程序应用于多个 jQuery 对象

javascript - 在 Free jqGrid 中配置 xxxParam 标签,以便在内联添加后重新加载

javascript - 如何检测单击了指向 javascript 函数的链接的 div

javascript - 更改货币符号或在inputmask货币中将其删除

javascript - 单击 map 外部的链接时如何将焦点聚焦到 map 标记?

jquery - 如何解决 Bootstrap node.js 应用程序中未定义的错误 "Cannot set property ' emulateTransitionEnd'?

javascript - 在 Jquery 中将 $(this) 与 css 类选择器一起使用

javascript - 加载 Javascript : HTTP Requests -v- Asynchronous Loading

javascript - CSS/HTML5 :hover state remains after drag and drop

jquery-plugins - 如何用 jQuery 模拟事件?