1

我从 SharePoint 库中检索电子邮件文档列表(*.eml 文件)。当该列表完成后,我会遍历它,将一些文件访问数据放入一个数组数组中。在此过程结束时,我有一组电子邮件文件名和其他访问数据。我遍历这个列表,通过 Ajax (jQuery) 打开每个电子邮件文件。当电子邮件内容返回给我时(来自非 Ajax 解码例程),我将其发送出去进行处理。

该处理是顺序相关的。我从访问数组中获取 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
        });
.
.
.

有任何想法吗?

4

1 回答 1

1

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

我想底线是您不能绝对确定您的浏览器是否会按照事件发生的顺序对其进行排队。

于 2013-03-16T10:46:22.333 回答