【问题标题】:Callback Basics回调基础
【发布时间】:2014-02-06 14:53:49
【问题描述】:
我对回调中的参数失去了理解。
app.get('/', function(req, res) {
res.render('index');
});
// A route for the home page - will render a view
这是使用 express 库,是一个基本的主页路由。我只是对这实际上如何获得 req/res 对象感到困惑?每当在'/'页面上接收到req/res对象时,服务器本身是否会调用该函数?
我了解函数的作用,只是不知道它实际上是如何接收参数的。
【问题讨论】:
标签:
javascript
node.js
express
【解决方案1】:
是的,您从服务器获取这些参数。每当 Express(即 Node.js)收到请求时,它就会运行您的回调并提供这两个参数。
把它想象成两个人之间的谈话:
- 你:'嘿 Golo,我是 X 方面的专家。所以当有人问你关于 X 的问题时,请告诉我并给我他们的电话号码。'
- 我:'好的,好的,我会这样做的。'
- (…)
- 我:'嘿,HelloWorld,我现在有一个请求。联系方式是 +49 177 ...'
请告诉我他们的电话号码。 是回拨电话。电话号码是回调的参数。
因此,在这种情况下,电话号码与您的 req 和 res 对象完全相同。在这个例子中我表现得像 Node.js / Express,你就是运行的应用程序。
HTH。
【解决方案2】:
这是一种直观的查看方式:
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
}