【发布时间】:2015-07-31 11:49:02
【问题描述】:
这是从我的网站加载应用程序名称的 getapps 函数。
getapps = function (applist){
var xmlhttp = new XMLHttpRequest();
var url = "http://mywebsite.com/"+applist;
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var myArr = JSON.parse(xmlhttp.responseText);
myFunction(myArr);
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
function myFunction(data) {
var i;
var query = data.data;
if(query != ''){
for(i = 0; i < query.length; i++) {
var appinstall='';
appAvailability.check(
query[i].appid, // URI Scheme or Package Name
function() { // Success callback
appinstall = "is available :)";
console.log(query[i].appid+"is available :)");
},
function() { // Error callback
appinstall = "is not available :(";
console.log(query[i].appid+"is not available :(");
}
);
console.log(appinstall);
}
}
}
}
console.log 位于 appAvailability.check 之外的函数首先触发 n 次 在接下来的几秒钟内 console.log 位于 appAvailability.check 内部的函数会触发 n 次,但出现错误 undefined appid。
我通过删除 for 循环和预定义 appid 进行了测试,它运行良好且没有错误。
如何通过让循环等待appAvailability.check 完成来解决这个问题?
【问题讨论】:
标签: javascript jquery cordova phonegap-plugins cordova-plugins