我查询了几个第三方子系统。有些需要20秒才能返回,再过5秒就会返回。我不希望用户挂在等待屏幕上20秒并返回部分结果。 (缓存结果无法获得更好的速度)
是否有框架或更好的jquery扩展可以帮助我这样做?我正在寻找支持Web套接字的东西,但也为老客户提供了一种轮询方法。
这样做的最佳模式是什么?我很想将Redis用作Polling Server。有更好的想法吗?
答案 0 :(得分:3)
您可以尝试将Reactive Extensions for .NET (Rx)与Jquery
一起使用*
Rx是标准LINQ的超集 暴露的序列运算符 异步和基于事件 计算作为基于推的,可观察的 通过新的.NET 4.0收集 接口IObservable和 IObserver。这些是 熟悉的数学对偶 IEnumerable和IEnumerator 基于拉的,可枚举的接口 .NET Framework中的集合。
*
我们很自豪地宣布 Reactive Extensions的可用性 对于Javascript。这个港口带来了 反应式编程的力量 JavaScript的。它允许你使用 JavaScript中的Rx组合器,它 这样做的下载大小更少 超过7Kb(GZipped)。 RxJS提供 现有的易于使用的转换 DOM,XmlHttpRequest和jQuery事件 到Rx推送集合,允许用户 将Rx无缝插入其中 现有的基于JavaScript的网站。
*
答案 1 :(得分:2)
如果你获得了JSON feed,你有没有看过jQuery的extend方法? 示例:
2个Ajax请求,它们响应的时间差,都调用相同的回调函数;
$(function(){
$.listitems = {};
var handleItems = function(data, status){
if(data){ // check that you have what you need
$.extend($.listitems, data[0]); // Merge the old and new data
refreshItems();
}
};
var refreshItems = function(){
var markup = [];
for(var a in $.listitems){
markup.push('<li>' + $.listitems[a].name + '</li>')
};
$('#container').html(markup.join());
}
$.ajax({ url: 'feed1.json', dataType: 'json', success: handleItems});
$.ajax({ url: 'feed2.json', dataType: 'json', success: handleItems});
});
如果您更喜欢使用Arrays而不是Objects,那么您可以查看Underscore js 它是_.flatten方法。