繁体   English   中英

多个连续ajax请求的jquery模式

[英]jquery pattern for multiple continuous ajax request

我有一个带有数组的每个循环,对于数组中的每个元素,我需要从服务器检索数据,所以我将为每个元素发出一个ajax请求并将结果存储在另一个数组中,我需要知道何时最后一个元素数组已被处理,所以我可以显示数据,是否有模式或我怎么能这样做而不会使事情复杂化我认为我正在做的事情

var array = ['a', 'b', 'c'],
    arrayLength = array.length,
    completed = 0;

然后,在你的XHR的回调中,

if (completed == arrayLength) {
   // All of them have finished.
}

completed++;

或者,您声明要将内容添加到新阵列。 假设完成后数组的长度相等,您可以将回调中的检查更改为(startArray.length == newArray.length)

另外,请记住,如果你在循环中制作XHR(假设是异步的),他们都会在大致相同的时间(我认为)尝试请求,这可能是性能问题。 考虑编写一个在每个单独请求的回调中再次调用的函数,因此XHR一次只能生成一个。 递增计数器,以便您可以在每次调用中下标下一个数组元素。

具有“并行”模式的连续传递库将很好地抽象。 我正在使用JooseX-CPS ,也看到它的教程

对于每次击中成功,计算成功结果然后触发事件。

例如:

var successfulReturns= 0; 
$.ajax({ 
    url:"", 
    success: function() { 
        successfulReturns++; 
        $(document).trigger("myapp.loadedComplete"); 
    }
}); 

然后听你的活动

$(document).bind("myapp.loadedComplete", function() {  } );

这使您可以在循环外的某处测试完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM