【问题标题】:sails.js asynchronous issuesails.js 异步问题
【发布时间】:2014-10-05 02:29:59
【问题描述】:

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

但与此同时,我访问了一个仅执行 res.view(anohterView) 的不同 url,它仍然等待了 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);
});

【问题讨论】:

    标签: node.js asynchronous express sails.js


    【解决方案1】:

    您的睡眠功能正在阻塞。 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
      );
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-09
      • 2017-12-31
      • 1970-01-01
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多