Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Titanium Studio保留函数执行,直到另一个函数完成_Javascript_Appcelerator - Fatal编程技术网

Javascript Titanium Studio保留函数执行,直到另一个函数完成

Javascript Titanium Studio保留函数执行,直到另一个函数完成,javascript,appcelerator,Javascript,Appcelerator,嘿,我正在尝试用一个表视图填充一个窗口,这个表视图是从Tianium Studio中的网络函数填充的,构建:2.1.1.201207271312。我已经正确地获取了数据,但问题是程序在不等待表视图正确填充的情况下继续运行。代码如下: ui.js: bs.ui.createTransitRoutesListWindow = function() { var winbsRoutesList = Titanium.UI.createWindow({ }); var tv2 =

嘿,我正在尝试用一个表视图填充一个窗口,这个表视图是从Tianium Studio中的网络函数填充的,构建:2.1.1.201207271312。我已经正确地获取了数据,但问题是程序在不等待表视图正确填充的情况下继续运行。代码如下:

ui.js:

bs.ui.createTransitRoutesListWindow = function() {

    var winbsRoutesList = Titanium.UI.createWindow({
    });
    var tv2 = Ti.UI.createTableView();
    tv2 = bs.ui.createbsRouteListTableView();

    winbsRoutesList.add(tv2);       
};

bs.ui.createbsRouteListTableView = function() {

    var tv = Ti.UI.createTableView();       

    Ti.API.info('populating data');
        var busStopList = bs.db.routeStopList(); 

        tv.setData(busStopList);

        return tv;

};
db.js:

 bs.db.routeStopList = function() {
var stoplist = [];

bs.net.getRoutes(function(data) {
    Ti.API.info('data length: '+data.length);
    for (var i = 0;i<data.length;i++) {
        stoplist.push({
            title:data[i].stopName,
            id: i
        });
    }

});
return stoplist;
 }
bs.db.routeStopList=函数(){
var停止列表=[];
bs.net.getRoutes(函数(数据){
Ti.API.info('数据长度:'+数据长度);

for(var i=0;i
bussearch.net.getRoutes()
是一个AJAX操作,因此它是异步的。这意味着代码不会等待它完成。代码将在响应进行时继续。它将响应的时间也未知

如果希望在数据返回后执行某些操作,则应该在回调中执行所有操作,或者创建延迟对象,如jQuery(基本上是回调容器)

bs.net.getRoutes = function(_cb) { 

    var xhr = Titanium.Network.createHTTPClient();
    xhr.onload = function() {  
        _cb(JSON.parse(this.responseText));

    Ti.API.info(this.responseText)
    };
    xhr.onerror = function(event) {
    }
    xhr.open("GET","<URL to valid JSON>", true);  
    //+ Ti.App.Properties.getString('currentBus','This is a string default')
    xhr.send();

};
//db.js
bussearch.db.routeStopList = function(callback) {
    var stoplist = [];
    bussearch.net.getRoutes(function(data) {
        ....
        callback.call(this,stoplist);
    });
}

//ui.js
bussearch.ui.createBussearchRouteListTableView = function(callback) {
    var tv = Ti.UI.createTableView();       
    Ti.API.info('populating data');
    bussearch.db.routeStopList(function(busStopList){
        tv.setData(busStopList);
        callback.call(this,tv);
    }); 
};

//calling createBussearchRouteListTableView()
createBussearchRouteListTableView(function(tv){
    //tv in here is the data
    //do inside here what you want to do to tv after it's retrieved
});