回调基础知识

时间:2014-02-06 14:53:50

标签: javascript node.js express

我在回调中失去了对参数的理解。

app.get('/', function(req, res) {
  res.render('index');
});
// A route for the home page - will render a view

这是使用快速库,是一个基本的主页路由。我只是对这实际上是如何得到req / res对象感到困惑?服务器本身是否在“/”页面上收到req / res对象时调用该函数?

我理解该函数的功能,我只是不知道它实际上是如何接收它的参数的。

2 个答案:

答案 0 :(得分:3)

是的,您从服务器获取这些参数。每当Express(即Node.js)收到请求时,它就会运行你的回调并提供这两个参数。

把它想象成两个人之间的谈话:

  • 你:'嘿Golo,我是X的专家。所以当有人询问你X时,请告诉我并给我他们的电话号码。'
  • 我:'好的,好的,我会的。'
  • (...)
  • 我:'嗨HelloWorld,我现在有一个请求。联系数据为+49 177 ...'

请告诉我并给我他们的电话号码。是回电。电话号码是回叫的参数。

因此,在这种情况下,电话号码与您的reqres对象完全相同。我在这个例子中表现得像Node.js / Express,你是运行的应用程序。

HTH。

答案 1 :(得分:1)

这是一种直观的方式来看待它:

app.get()是一个带2个参数的函数,第一个是你的路径作为字符串,第二个参数是一个函数。 app.get()将回调此函数;

所以我们假设你像这样调用app.get

app.get('/', function abc(req, res){..})

然后,app.get的实现将类似于:

app.get = function(path, callBackFunction){
   // do some stuff here to get the values of req and res
   callBackFunction(req, res); // calling back the function passed to us with req and res
}