我无法理解的东西在JavaScript中执行的顺序...它似乎完全不遵循我习惯于从Java的顺序。任何人都可以建议如何强制正确的顺序?JavaScript奇怪的执行顺序(循环等)
我想要getRegisteredUsersList首先完成,这将提供获取AllUsersActivityCount
与第一个参数,这是一个数组。
然后对于该阵列的每个元素,我希望getAllUsersActivityCount
对其执行countActivitiesForUser
。不幸的是,这不能按预期工作。
我有以下几种方法:
$scope.count = function(){
var result = getAllUsersActivityCount(getRegisteredUsersList(),4);
return result;
};
getRegisteredUsersList = function(){
var url = "MY QUERY URL THAT RETURNS ARRAY OF USERS";
$http.get(url).success(
function(data, status, headers, config) {
return data;
}
);
};
getAllUsersActivityCount = function(usersList,type){
var sdf = new JsSimpleDateFormat("MMM d, yyyy");
var date = sdf.format(new Date());
var returnArray = [];
for(var i=0;i<usersList.length;i++){
var userid= usersList[i].userid;
var name= usersList[i].name;
returnArray.push({userid: userid, name: name, count: countActivitiesForUser(userid,type,date)});
}
return returnArray;
};
$scope.countActivitiesForUser = function(userid,type,date){
var url = "MY QUERY URL THAT RETURNS SINGLE NUMBERICAL VALUE";
$http.get(url).success(
function(data, status, headers, config) {
return data;
}
);
};
您只定义函数但不调用它们 – mrida
您正在运行异步代码,它不遵循常规流程,它会在执行时执行。异步代码中的返回值无用,您可以使用回调或承诺模式。检查这个问题http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call – elclanrs
我现在编辑帖子。 – LucasSeveryn