sails.js异步问题

时间:2014-08-12 06:04:44

标签: node.js asynchronous express sails.js

我想测试sails.js的异步性能,所以我写了下面的代码等待10秒(我认为代码应该由于回调函数而异步执行)。当我访问执行代码的url时,它等了10秒,没关系。

但与此同时,我访问了一个只执行res.view(anohterView)的不同网址,它仍然等待了10秒。这是否意味着sails.js同步执行,第二个url访问被第一个阻止?谢谢!

someModel.findOne(modelId, function foundModel (err, model) {
  if (err) return next(err);
  if (!model) return next('Model doesn\'t exist.');

  function sleep(milliSeconds) {
      var startTime = new Date().getTime();
      while (new Date().getTime() < startTime + milliSeconds);
  }
  sleep(10000);

  res.view(Someview);
});

1 个答案:

答案 0 :(得分:2)

你的睡眠功能正在阻塞。 Sails.js / nodejs是单线程所以当你的回调被调用时,线程将被阻塞直到它完成。

如果你想'睡觉',你应该使用setTimeout

someModel.findOne(modelId, function foundModel (err, model) {
  if (err) return next(err);
  if (!model) return next('Model doesn\'t exist.');

  setTimeout(
    function() {
      res.view(Someview);
    }
    10000
  );
});