response.end()什么作用?什么情况下需要调用呢?
发布于 12 年前 作者 xlqstar 9507 次浏览 最后一次编辑是 8 年前

各位咨询一个问题,注意到nodeAPI中有一个request.end([data], [encoding]),说是当所有响应输出完后调用,告诉server已经输出结束,但是我在Express的example中没有看到任何关于此的调用,搜索整个代码也没有搜索到,因此奇怪:

1、此方法是否是必须调用的?如果不调用会怎样? 2、什么情况下需要调用此方法? 3、Express中没有看到这个方法的身影,它去哪了?

5 回复

express 是框架, API 被封装过的, 框架内部会有 res.end() 的调用, 我猜是这里的 .end() https://github.com/visionmedia/express/blob/master/lib/response.js#L82

app.get(’/’, function(req, res){ res.send(‘hello world’); }); 现在这个get方法到底在哪定义的我都没有找到,找了半天了……

我觉得是这行代码修改了这个属性然后改掉的:

var res = module.exports = {
  __proto__: http.ServerResponse.prototype
};

https://github.com/visionmedia/express/blob/master/lib/response.js#L27

找到啦 找到啦 原来是这里

/**
 * Delegate `.VERB(...)` calls to `.route(VERB, ...)`.
 */

methods.forEach(function(method){
  app[method] = function(path){
    if ('get' == method && 1 == arguments.length) return this.set(path); 
    var args = [method].concat([].slice.call(arguments));
    if (!this._usedRouter) this.use(this.router);
    return this._router.route.apply(this._router, args);
  }
});

app.get()这个方法在这里定义的,但是这一段好费解,还没完全整明白啥意思 https://github.com/visionmedia/express/blob/master/lib/application.js#L406

@xlqstar e… methods 引用了 TJ 自己写的模块… 我居然在 Github 上翻不到

回到顶部