4-2课中this.body指的是什么?

来源:

杨洋1989

2016-08-14

是koa响应事件对象的封装吗?

写回答

1回答

Scott

2016-08-15

对,对于 res.send  的封装。


你可以扒进去看 koa 的源码,其实源代码很好理解,如下:

function respond() {
  // allow bypassing koa
  if (false === this.respond) return;
  var res = this.res;
  if (res.headersSent || !this.writable) return;
  var body = this.body;
  var code = this.status;
  // ignore body
  if (statuses.empty[code]) {
    // strip headers
    this.body = null;
    return res.end();
  }
  if ('HEAD' == this.method) {
    if (isJSON(body)) this.length = Buffer.byteLength(JSON.stringify(body));
    return res.end();
  }
  // status body
  if (null == body) {
    this.type = 'text';
    body = this.message || String(code);
    this.length = Buffer.byteLength(body);
    return res.end(body);
  }
  // responses
  if (Buffer.isBuffer(body)) return res.end(body);
  if ('string' == typeof body) return res.end(body);
  if (body instanceof Stream) return body.pipe(res);
  // body: json
  body = JSON.stringify(body);
  this.length = Buffer.byteLength(body);
  res.end(body);
}


0
2
杨洋1989
非常感谢!
2016-08-15
共2条回复

7天搞定Node.js微信公众号

Koa框架、ES2015新特性、MongoDB,开发微信公众号

1742 学习 · 787 问题

查看课程