Javascript 下面的代码说明了异步功能吗?
我假设,如果在节点控制台中运行以下代码Javascript 下面的代码说明了异步功能吗?,javascript,node.js,mongodb,shell,asynchronous,Javascript,Node.js,Mongodb,Shell,Asynchronous,我假设,如果在节点控制台中运行以下代码 var MongoClient = require('mongodb').MongoClient; MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db){ if (err) throw err; db.collection('allClasses').findOne({}, function(err, doc){ //Print t
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db){
if (err) throw err;
db.collection('allClasses').findOne({}, function(err, doc){
//Print the result
console.dir(doc);
//close the DB
db.close();
});
});
setTimeout(function(){
console.dir("10 Milliseconds!");
}, 10);
setTimeout(function(){
console.dir("100 Milliseconds!");
}, 100);
如果我持续(10次中的10次)得到以下输出:
这说明mongo查询不仅需要10到100毫秒才能完成
返回我的数据,但我的节点控制台以异步方式执行我的代码
问题:这是正确的吗
我还有一个问题
如果我等待很长时间来执行这个脚本,比如说20分钟,让mongod.exe运行。然后运行脚本。有时我会得到以下输出
我可以理解最后返回的数据,我假设因为某种原因(可能与连接有关)需要超过100毫秒的时间,或者因为mongod处于空闲状态或类似情况,我等待的时间更长
问题2:为什么超时时间较长的消息功能会首先出现
我知道一定有一个愚蠢的原因。10和100毫秒的时间间隔非常低,你应该增加它以查看更准确的数据,你的电脑可能会延迟这段时间,这可以描述你的
,有时
。好的,我可以理解,但考虑到条件和测试运行,我现在已经做了100多次了。考虑到我的机器和现在没有什么不同。这是否意味着平均而言(或大多数情况下没有可减轻的情节)这是正确的?那么,这个奇怪的返回是怎么回事,它首先显示的是更长的超时时间。还有别的事吗?这是在这段代码中演示异步的一种糟糕方式吗?有更好的办法吗?