Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 下面的代码说明了异步功能吗?_Javascript_Node.js_Mongodb_Shell_Asynchronous - Fatal编程技术网

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多次了。考虑到我的机器和现在没有什么不同。这是否意味着平均而言(或大多数情况下没有可减轻的情节)这是正确的?那么,这个奇怪的返回是怎么回事,它首先显示的是更长的超时时间。还有别的事吗?这是在这段代码中演示异步的一种糟糕方式吗?有更好的办法吗?