以下代码是否说明了异步功能?

时间:2014-08-15 08:54:59

标签: 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 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次)获得以下输出:

enter image description here

这表明mongo查询不仅需要10到100毫秒  返回我的数据,但我的节点控制台以异步方式执行我的代码。

问题:这是对的吗?

我有一个替代问题。

如果我等待很长时间来执行此脚本,请说20分钟,让我的mongod.exe运行。然后运行脚本。有时我得到以下输出。

enter image description here

我可以理解最后的数据返回,我假设因为某些原因需要超过100毫秒可能与连接有关,或者因为我等了很长时间才需要更长时间,因为mongod是空闲的或者是什么东西那些线......

问题2:为什么超时的消息功能会首先出现?

我知道必须有一个愚蠢的理由。

0 个答案:

没有答案