2013-03-14 54 views
1

我从SharePoint库检索电子邮件文档(* .eml文件)的列表。 当这个列表完成时,我遍历它,将一些文件访问数据放入一个数组数组中。在这个过程结束时,我有一系列的电子邮件文件名和其他访问数据。 我遍历这个列表,通过Ajax(jQuery)打开每个电子邮件文件。 当电子邮件内容已经返回给我(来自非Ajax解码例程)时,我将其发送出去处理。我期望从SharePoint jQuery应用获得顺序结果,但得到随机结果

该处理顺序依赖。我从访问数组中获取email1,然后将其发送给解码器,然后对其进行处理(实质上,将其写入列表中)。我遇到的问题是,尽管我发送了email1,然后发送了email2,然后发送了email3,但是我从解码器得到的内容就是返回的感觉。也许1,2,3,也许1,3,2,也许3,2,1。因为我很小心地确保按顺序处理电子邮件,所以我期望能够顺序地返回其内容。不。

$.each(arIDs, function(index, value) { 
     //the following statement orders perfectly 
      $("#results").append("<br>dealing with " + arIDs[index][2]); 
      var ajaxPromise = $.ajax({ 
      type:"GET", 
      url:"GFSSEForm/" + arIDs[index][2], 
      dataType:"text" 
     }).done(function(data) { 
      decodeEmail(data); //sets global arValues 
      $("#results").append("<br>" + arValues); //not returned in order passed 
     }); 
. 
. 
. 

任何想法?

+0

进一步的测试表明,Ajax语句在执行前正在排队。不幸的是,他们的排队或他们的检索顺序不是一个严格的FIFO安排。 – 2013-03-15 12:38:00

回答

1

我对我创建的测试站点(http://www.michaelbroschat.com/Ajax/AjaxTest.html)进行了广泛的测试,最终得到了所有我试图失败的浏览器(即,以非FIFO序列排队)。现代浏览器最好(IE10,Firefox,Chrome),但最终都失败了。我的工作环境是IE7,我也在IE8上测试过。两者都比现代浏览器更快速地失败。

我想底线是你不能绝对确定你的浏览器会按照它们发生的顺序排列它的事件。