我想问这个问题,因为我不确定我的 Node.js 逻辑是否正确
我有一组需要使用 redis 的 get 方法查询的 id。在检查了某个值之后(假设我正在检查我使用给定“键”获得的对象是否具有空名称),我将它们添加到列表中。这是我的示例代码;
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 的情况下执行“Goes here...”。我需要在检查每个 id 后应用其余程序(在 redis db 中映射并检查名称)。但我不知道该怎么做。也许如果我可以将回调附加到 for 循环并确保我的其余函数在循环完成后开始运行(我知道这是不可能的,但只是给出一个想法)?