我想问这个问题,因为我不确定自己是否理解了Node.js的逻辑。
我有一组需要使用redis的get方法查询的id。在检查特定值之后(假设我正在检查我使用给定“key”获取的对象是否具有空名称),我将它们添加到列表中。这是我的示例代码:
我有一组需要使用redis的get方法查询的id。在检查特定值之后(假设我正在检查我使用给定“key”获取的对象是否具有空名称),我将它们添加到列表中。这是我的示例代码:
var finalList = [];
var list = [];
redisClient.smembers("student_list", function(err,result){
list = result; //id's of students
console.log(result);
var possibleStudents = [];
for(var i = 0; i < list.length; i++){
redisClient.get(list[i], function(err, result){
if(err)
console.log("Error: "+err);
else{
tempObject = JSON.parse(result);
if(tempObject.name != null){
finalList.push(tempObject);
}
}
});
}
});
console.log("Goes here after checking every single object");
但是,由于Node的异步性质,如果不检查列表中的每个id,它就会执行“在这里执行...”。我的需求是在检查每个id(在redis db中映射和检查名称)之后应用其余程序。但我不知道如何做到这一点。也许我可以将回调函数附加到for循环上,并确保在循环完成后开始运行我的其他函数(我知道这是不可能的,但只是为了给个想法)?