这是有问题的功能
function matches_password(password)
{
var modified = false;
var matched = false;
User.count({password : password}, function (err, result)
{
modified = true;
console.log('hei');
if (err)
{
//error
}
else
{
if (result)
{
matched = true;
}
}
});
while (!modified)
{
console.log('sleeping');
sleep.usleep(100000);
}
return matched;
}
正如您所看到的,我有一个更新一些变量的回调;主要的执行流程被延迟,直到回调被触发。问题是'hei'
永远不会出现在控制台中。
删除while循环可以解决问题,但我需要它,否则matched
总是错误的。
发生了什么事,我该怎样做才能解决这个挫折?
答案 0 :(得分:-1)
看起来你遇到了异步问题。你可以尝试在调用User.count(...)
的while循环中使用setTimeout函数了解setTimeout如何与Node配合使用:How does setTimeout work in Node.JS?