3 года назад я мог сделать несколько res.send в express.js.
даже напишите setTimeout для отображения живого выхода.
response.send(''); response.send(''); var initJs = function() { $('.button').click(function() { $.post('/input', { input: $('#text_box').val() }, function() { alert('has send');}); }); } response.send('' + initJs + '');
Теперь он бросит:
Error: Can't set headers after they are sent
Я знаю, что nodejs и express обновлены. почему бы не сделать это сейчас? любая другая идея?
Нашел решение, но «res.write» не находится в ссылке api http://expressjs.com/4x/api.html …
: S
Может понадобиться: response.write
response.write("foo"); response.write("bar"); //... response.end()
res.send
неявно вызывает res.write
за которым следует res.end
. Если вы res.send
несколько раз, он будет работать в первый раз. Однако, поскольку первый вызов res.send
завершает ответ, вы не можете ничего добавить к ответу.
response.send
отправляет весь HTTP-ответ клиенту, включая заголовки и контент, поэтому вы не можете его вызывать несколько раз. Фактически, это даже заканчивает ответ, поэтому нет необходимости вызывать response.end
явно при использовании response.send
.
Мне кажется, что вы пытаетесь использовать send
как буфер: записываете его с намерением сбросить позже. Однако это не так, как работает метод. вам нужно создать ответ в коде, а затем сделать один вызов для send
.
К сожалению, я не могу говорить, почему и когда это изменение было сделано, но я знаю, что это было так, по крайней мере, с Express 3.