猫鼬回调没有开火

时间:2015-07-18 16:38:21

标签: javascript node.js mongodb asynchronous mongoose

这是有问题的功能

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总是错误的。

发生了什么事,我该怎样做才能解决这个挫折?

1 个答案:

答案 0 :(得分:-1)

看起来你遇到了异步问题。你可以尝试在调用User.count(...)

的while循环中使用setTimeout函数

了解setTimeout如何与Node配合使用:How does setTimeout work in Node.JS?