【发布时间】:2017-07-25 17:37:54
【问题描述】:
在此代码中,for 循环仅第一次运行。请告诉我如何纠正它。我需要函数 get_profile_image() 在它开始执行循环的下一个值之前运行。在此循环代码中仅第一次运行。
function response(){
var deferred = q.defer();
for(var i=0; i < results.length; i++){
var from_name = results[i].from_name;
var request_from = results[i].request_from;
var empty = new Array();
friend_requests.push(empty);
friend_requests[i].push(from_name);
friend_requests[i].push(request_from);
var new_array = friend_requests[i];
function get_profile_image(){
var profile_image_defer = q.defer();
var dir = "./public/img/users_directory/"+request_from;
fs.readdir(dir, function(err, files) {
files.forEach(function(f) {
var file = f.substr(0, f.lastIndexOf('.'));
if(file === "profile_image"){
profile_image = "../img/users_directory/"+email+ "/" +f;
new_array.push(profile_image);
}
});
profile_image_defer.resolve(profile_image);
});
return profile_image_defer.promise;
}
get_profile_image().then(function(){
deferred.resolve(friend_requests); //This runs only for first time i.e. i=0
});
return deferred.promise;
}
}
response().then(function(){
console.log(friend_requests);
res.send(friend_requests);
})
【问题讨论】:
-
你在 for 循环中返回 - 这就是为什么它只运行一次
-
如果您尝试描述您的问题而不是显示您的代码会更好,因为在某些方面不可读和错误...