gpt4 book ai didi

javascript - 使用 jQuery Deferred 查找第一个可用数据源

转载 作者:搜寻专家 更新时间:2023-11-01 04:19:22 25 4
gpt4 key购买 nike

所以我在面试时被问到这个问题,但它提出了一个很好的用例。假设您有一堆数据源。你想找到第一个可用的并处理它并忽略其余的。

所以像这样:

var datasources = new Array("somedatabase1/pizza","somedatabase2/beer","somedatabase3/llama");
var dfds = new Array();
$.each(datasources,function(source){
dfds.push($.getJSON(source));
});

$.when(dfds).done(function(){alert("they are all done");});

忽略我真的不认为什么时候接受数组(也许是)。这当然会让它等到它们全部完成。我正在寻找一些代码,让它等到其中一个完成,然后不用担心其他。

我被告知它只能递归工作。

最佳答案

这不使用递归,但符合​​从多个数据源获取的要求,并且只关心第一个返回成功响应的数据源。

http://jsfiddle.net/mNJ6D/

function raceToIt(urls) {
var deferred = $.Deferred(),
promises;

function anyComplete(data) {
if (!deferred.isResolved()) {
deferred.resolveWith(this, [data]);
promises.forEach(function(promise) {
promise.abort();
});
}
}
promises = urls.map(function(url) {
return $.getJSON(url).then(anyComplete);
});
return deferred.promise();
}
raceToIt(["/echo/json/", "/echo/json/", "/echo/json/"]).then(function(data) {
console.log(data);
});​

关于javascript - 使用 jQuery Deferred 查找第一个可用数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11089335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com