关于 node.js 中的函数调用

About function invoking in node.js

我运行一个node.js服务器,当我导航到/foo/bar时它进入router.get(),但为什么它也进入mongodb.MongoClient.connect()

在哪里调用的?

var mongodb = require('mongodb');

router.get('/foo/bar', function (req, res) {
    console.log("in router get");

    mongodb.MongoClient.connect(uri, function(error, db) {
            console.log("in mongo db");

    });
});

I run a node.js server, and when I navigate to /foo/bar it enters router.get()

实际上没有,它在 启动 时进入 router.get,然后您导航到 /foo/bar,并且只进入一次。

but why does it also enters the mongodb.MongoClient.connect()?

因为那是 router.get 的目的:告诉 Express(用于此的库)当有 /foo/bar 的请求时,它应该 运行 给定的回调。因此,当您导航到 /foo/bar 时,Express 会调用回调,而回调的代码会调用 mongodb.MongoClient.connect。这种情况会反复发生,只要有 /foo/bar.

的服务器请求