我想测试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/