0

我想将 httpclient 放在一个单独的类中,并希望返回已建立的数据数组。我的代码

function ServiceRequest(callback){
var data = [];
var xhr = Titanium.Network.createHTTPClient({
    onload: function(e){
        //Ti.API.info("Received text: " + this.responseText);

        var doc = this.responseXML.documentElement;
        var elements = doc.getElementsByTagName("record");
        for (var r=0;r<elements.length;r++){
             var name = elements.item(r).getElementsByTagName("field").item(3).textContent;
             var monteur = elements.item(r).getElementsByTagName("field").item(15).textContent;  
             var adresse =elements.item(r).getElementsByTagName("field").item(10).textContent;
             var ort = elements.item(r).getElementsByTagName("field").item(4).textContent +" - "+ elements.item(r).getElementsByTagName("field").item(5).textContent;
             var date = elements.item(r).getElementsByTagName("field").item(8).textContent;
             var termin 
             if (date !="") {
                var arrayDate = date.split(".");
                var newdate = arrayDate[1]+"."+arrayDate[0]+"."+arrayDate[2];
                var temptermin = newdate +" - "+ elements.item(r).getElementsByTagName("field").item(9).textContent;
                termin = temptermin;
            };

            data.push({"name":name,"monteur":monteur,"adresse":adresse,"ort":ort,"termin":termin});

             callback( data );
            };

    },
    onerror: function(e){

        Ti.API.debug(e.error);
        alert(e.error);
    }
});

    xhr.open("GET","http://theurltomyxml.com",false);
    xhr.send();

}

module.exports =服务请求;

我初始化的代码片段

var ServiceRequest = require('ui/common/ServiceRequest');
request = new ServiceRequest(function(data){

});

Ti.API.info(request);

但是请求为空,我的 onLoad 函数中的数组填充了数据。我怎样才能等到 httpRequest 准备好而不是返回数据数组?

4

1 回答 1

0

您可以像这样使用自定义函数进行回调onload : callBack创建自己的回调函数,或者您可以将您的回调函数放在您callback( data );的 forloop 之后。

for (var r=0;r<elements.length;r++){//==your code here for parsing } callback( data );

于 2012-07-23T08:59:46.087 回答