我想测试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);
});
答案 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
);
});