В Node.Js Express «res.render» завершает HTTP-запрос? - PullRequest
8 голосов
/ 28 апреля 2011

Итак, делайте res.render только тогда, когда вы уверены, что все закончилось, верно? Потому что он заканчивает запрос и снимает веб-страницу.

Ответы [ 2 ]

11 голосов
/ 28 апреля 2011

Если вы не предоставите обратный вызов на res.render(view[, options[, fn]]), он автоматически даст ответ с 200 HTTP Status и Content-Type: text / html

res.render('view', {}, function() {
    while (true); // should block 
});

res.render (просмотреть[, options [, fn]])

Визуализация с заданными параметрами и необязательным обратным вызовом fn.Если задана функция обратного вызова, ответ не будет сделан автоматически, однако в противном случае будет получен ответ 200 и текст / html.

express.js guide

4 голосов
/ 28 апреля 2011

При текущей мастер-фиксации github это res.render в lib / view.js :

 /**
 * Render `view` with the given `options` and optional callback `fn`.
 * When a callback function is given a response will _not_ be made
 * automatically, however otherwise a response of _200_ and _text/html_ is given.
 *
 * Options:
 *  
 *  - `scope`     Template evaluation context (the value of `this`)
 *  - `debug`     Output debugging information
 *  - `status`    Response status code
 *
 * @param  {String} view
 * @param  {Object|Function} options or callback function
 * @param  {Function} fn
 * @api public
 */
res.render = function(view, opts, fn, parent, sub){
  // support callback function as second arg
  if ('function' == typeof opts) {
    fn = opts, opts = null;
  }

  try {
    return this._render(view, opts, fn, parent, sub);
  } catch (err) {
    // callback given
    if (fn) {
      fn(err);
    // unwind to root call to prevent
    // several next(err) calls
    } else if (sub) {
      throw err;
    // root template, next(err)
    } else {
      this.req.next(err);
    }
  }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...