node.js - sails.js 异步问题

标签 node.js asynchronous express sails.js

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

但与此同时,我访问了另一个仅执行 res.view(anohterView) 的 url,它仍然等待了 10 秒。这是否意味着 sails.js 同步执行,第二个 url 访问被第一个 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);
});

最佳答案

您的 sleep 功能被阻塞。 Sails.js/nodejs 是单线程,因此当您的回调被调用时,线程将被阻塞,直到完成为止。

如果你想“ sleep ”,你应该使用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
  );
});

关于node.js - sails.js 异步问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25257214/

相关文章:

javascript - 如何在 graphql 解析器中实现守卫

node.js - AWS Lambda - 使用 Node.js 获取路径参数

javascript - 如何将数组对象更新到mongoDB

node.js - NodeJS API 的 Nginx 配置

javascript - Vue JS 应用程序上的 Passport JS 身份验证

c# - 使用 C# Async Await 进行负载测试

javascript - NodeJS 异步库不会异步发送请求

java - Java中如何使用实现类中的方法来捕获事件?

node.js - 从我的 Node.js 服务器下载文件时出错

node.js - 访问另一个子文件夹express.js中的html文件