我想测试sails.js的异步性能,所以我编写了下面的代码,等待10秒(我认为由于回调函数,代码应该异步执行)。当我访问执行代码的url时,它等待了10s,很好。
但与此同时,我访问了一个只执行res.view(anohterView)的不同的url,它还在等待10s。这是否意味着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);
});发布于 2014-08-12 14:38:06
你的睡眠功能被阻塞了。‘s/nodejs是single-threaded,所以当您的回调被调用时,线程将被阻塞,直到它完成为止。
如果你想‘睡觉’,你应该使用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
);
});https://stackoverflow.com/questions/25257214
复制相似问题