Javascript 将一些参数传递给WinJs xhr的回调函数

Javascript 将一些参数传递给WinJs xhr的回调函数,javascript,windows-8,winjs,Javascript,Windows 8,Winjs,在Windows 8中,我在循环中使用WinJs.xhr下载一些内容,当它到达“完成回调”之后,我想传递一个参数来检索调用xhr的元素 for (var k = 0 ; k < 9; k++) { var title = dataArray[k].name; if (title != null) url = monUrl+ titl

在Windows 8中,我在循环中使用WinJs.xhr下载一些内容,当它到达“完成回调”之后,我想传递一个参数来检索调用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;
 }
}
for(var k=0;k<9;k++){
var title=dataArray[k]。名称;
如果(标题!=null)
url=monUrl+title;
xhr({url:url,responseType:“responseXML”})
.完成(功能完成(结果){
//例如,我想在这里检索正确的标题
var dataArray=新数组();
var xml=result.responseXML;
}
}

感谢您的帮助

您需要在一个闭包中捕获它,使用vanilla for循环/迭代是一件痛苦的事情:

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]);
}
for(var k=0;k<9;k++){
(职能(项目){
var-url;
var title=item.name;
如果(标题!=null)
url=monUrl+title;
xhr({url:url,responseType:“responseXML”}).done(函数完成(结果){
//例如,我想在这里检索正确的标题
var dataArray=新数组();
var xml=result.responseXML;
/*在此处使用您的标题属性*/
});
})(数据数组[k]);
}

太棒了。它很有魅力。谢谢。我有一个问题:它不是破坏了mutli请求的异步性吗?因为我使用for循环触发所有请求,然后所有结果在完成回调后返回。xhr是aysnc;这是使此异步的关键-所有网络请求都在另一个回调上发出她的线程,完成后在ui上完成