我如何通过执行直到我从嵌套的Web服务调用获得响应

时间:2014-10-10 12:49:49

标签: javascript web-services callback titanium titanium-alloy

步骤:

  1. 获取名单(学生)json数据包括来自网络服务的名称,个人资料网址
  2. 通过传递个人资料网址
  3. 处理数据并通过网络服务电话获取每个用户的个人资料图片
  4. 在窗口中显示每个用户的名称和图像
  5. 在处理数据时,我需要暂停执行,直到我从第二次Web服务调用中获取图像。我尝试使用回调但无法实现。

    下面的

    是代码段

    
    
    //get roster data from web service:1
    function getRosterData(callback) {
    
    	var rosterToolURL; //web service url
    
    	var xhrRosterTools = Ti.Network.createHTTPClient({
    		onload : function() {
    			var rosterJsonData = JSON.parse(this.responseText);
    			//pass response to callback
    			callback(rosterJsonData);
    		},
    		onerror : function(e) {
    			Ti.API.info("STATUS: " + this.status);
    
    		},
    	});
    
    	xhrRosterTools.open("GET", rosterToolURL);
    	xhrRosterTools.send();
    }
    
    //process the roster data and call getUserImage for each row
    function rosterWIndow(rosterJsonData) {
    
    	var roster_collection = rosterJsonData.roster_collection;
    	for ( i = 0; i < roster_collection.length; i++) {
    		var rosterInfo = roster_collection[i];
    		var imageURL = rosterInfo.imageUrl;
    		//call get user
    		getUserImage(imageURL, function(imageData) {
    			Ti.API.info('after call back2' + imageData);
    
    		});
    
    	}
    
    }
    
    //get image from web service:2
    function getUserImage(imageURL) {
    	var xhrinfo = Ti.Network.createHTTPClient({
    		onload : function() {
    			Ti.API.info('response data' + this.responseData);
    			return this.responseData;
    		},
    		onerror : function(e) {
    			Ti.API.info("STATUS: " + this.status);
    
    		},
    	});
    
    	xhrinfo.open("GET", imageURL);
    	xhrinfo.send();
    }
    getRosterData(rosterWIndow);
    &#13;
    &#13;
    &#13;

0 个答案:

没有答案