我正在使用 Titanium SDK 开发一个与远程 PHP 文件交互以检索其数据的小型 Android 应用程序。FOR 循环在 HTTPClient 返回任何数据之前执行,因此“myTest”为空,并且没有任何内容添加到“tblListing”。
function jsonPOST( inAction, inParams ) { // jsonPOST is a global function
var xhr = Ti.Network.createHTTPClient({
onload : function(e) {
Ti.API.info("Received text: " + this.responseText);
return this.responseText;
},
onerror : function(e) {
Ti.API.debug(e.error);
alert('error');
return false;
},
timeout : 8000, // in milliseconds
});
var sendData = {
'action' : inAction,
'json' : JSON.stringify(inParams)
};
xhr.open('POST', "http://domain.com/file.php"); // url redacted
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.send( sendData );
} // end. jsonPOST()
var myTest = jsonPOST('getlisting'); // only need to pass first param in this instance
for (i in myTest) {
tblListing.appendRow({ title: myTest[i].title, id: myTest[i].id });
}
在不延迟在同一线程上执行其他任何操作的情况下,如何使 FOR 循环等待直到 HTTPClient 返回数据?“jsonPOST”函数用于检索应用程序中多个元素的各种数据,并且应该保持动态。