このループのコードでは、初めてのみ実行されます。どのように修正できるか教えてください。ループの次の値の実行を開始する前に関数get_profile_image()を実行する必要があります。このコードforループでは、初めてのみ実行されます。Qライブラリを使ってforループに約束を適用するには?
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ループの中に戻ってきています - これは一度だけ実行される理由です –
あなたのコードを表示する代わりにあなたの問題を記述しようとすると、読めなくなり、 – Jaime