2012-08-09 130 views
0

在Windows 8中,我在一個循環中使用WinJs.xhr來下載一些內容,並且隨後到達「完成回調」時,我想通過一個參數檢索調用xhr的元素。將一些參數傳遞給WinJs的回調函數xhr

for (var k = 0 ; k < 9; k++) { 
         var title = dataArray[k].name; 
         if (title != null) 
          url = monUrl+ title; 

         WinJS.xhr({ url: url, responseType: "responseXML" }) 
    .done(function complete(result) { 

    //I would like to retrieve the right title here for example 
     var dataArray = new Array(); 
     var xml = result.responseXML; 
} 
} 

謝謝您的幫助

回答

1

你需要捕捉到它的關閉,與香草的循環/迭代是一個痛苦:

for (var k = 0 ; k < 9; k++) { 
    (function(item) { 
     var url; 
     var title = item.name; 
     if (title != null) 
      url = monUrl+ title; 

     WinJS.xhr({ url: url, responseType: "responseXML" }).done(function complete(result) { 
      // I would like to retrieve the right title here for example 
      var dataArray = new Array(); 
      var xml = result.responseXML; 
      /* use your title property here */ 
     }); 
    })(dataArray[k]); 
} 
+0

神奇。它像一個魅力。謝謝。我只是有一個問題:它不打破mutli請求的不同步嗎?因爲我用for循環觸發了所有的請求,然後所有的結果都在回調完成後回來了。 – 2012-08-10 08:22:11

+0

xhr is aysnc;這是實現這種異步的關鍵 - 所有的網絡請求都會在另一個線程上出現,並在完成時完成 – 2012-08-10 14:25:43