2013-03-14 73 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上測試過。兩者都比現代瀏覽器更快速地失敗。

我想底線是你不能絕對確定你的瀏覽器會按照它們發生的順序排列它的事件。