Javascript node.js代码中回调参数的含义

Javascript node.js代码中回调参数的含义,javascript,node.js,callback,Javascript,Node.js,Callback,我是Node.js的新手,我只是想弄清楚这些参数在代码的回调方法中是如何工作的 我只能理解第一个,function(req,res),因为我在Java中使用过它,在服务器端工作时,但我真的不明白它是如何自动调用memcached函数的,或者它是如何启动其余函数的,等等。如果有人能向我解释这是如何工作的,我将非常感激。多谢各位 server.on('request', function(req, res) { //get session information from memcached

我是Node.js的新手,我只是想弄清楚这些参数在代码的回调方法中是如何工作的

我只能理解第一个,function(req,res),因为我在Java中使用过它,在服务器端工作时,但我真的不明白它是如何自动调用memcached函数的,或者它是如何启动其余函数的,等等。如果有人能向我解释这是如何工作的,我将非常感激。多谢各位

server.on('request', function(req, res) {
  //get session information from memcached 
   memcached.getSession(req, function(session) {
    //get information from db 
    db.get(session.user, function(userData) {
      //some other web service call 
      ws.get(req, function(wsData) {
         //render page
         page = pageRender(req, session, userData, wsData);
         //output the response
         res.write(page);
         });
      });
    });
});

它可以粗略地与在Java中传递匿名类相比较。例如,要在Java中对集合进行排序,需要传递一个comparator类,该类具有用于比较两个对象的方法。稍后,当排序算法需要比较对象时,它调用所提供类中的函数

在javascript中,函数是第一类对象,这意味着我们不需要“包装器”类,可以将其作为参数传递给另一个函数


在您的例子中,“memcached.getSession”将执行is not logic,找到会话,并调用您在第二个参数中传递的匿名函数,以会话为参数。

它不会自动调用任何东西,对memcached的调用是硬编码的,就在那里,与任何其他函数调用一样,它传递请求参数,它有一个回调函数,一旦它完成了它所做的一切,它就会被执行。好吧,我想我对它的理解要好一点。。但是getSession的回调从哪里获取会话变量呢?它从内部获取会话变量,并在回调中返回它。如果你想弄清楚它到底是从哪里来的,看看memcached中间件的源代码。它只是示例代码,所以不完整。但你的意思是,为了让它发挥作用,在这两者之间有一个变量,叫做session?这对我来说更有意义。@WendellBlatt回调接收会话作为参数,我假设memcached使用请求对象来启动会话,例如检查cookie中的会话ID。