У меня есть несколько приложений Express , и я вижу, что в некоторых модулях он res.end()
вызывается в конце обработчика запроса (после res.send
или res.json
), а в других он не вызывается.
Например:
app.get('/test', function(req, res) {
res.send('Test', 200);
});
или:
app.get('/test', function(req, res) {
res.send('Test', 200);
res.end();
});
Оба случая работают, но я боюсь утечек или исчерпания файловых дескрипторов или чего-то подобного, когда я выполняю много запросов. Какой из них «правильнее»?
res.send()
сработалоres.end()
- но все же могло ошибаться.Ответы:
Ответ на ваш вопрос - нет. Вам не нужно звонить,
res.end()
если вы звонитеres.send()
.res.send()
зоветres.end()
вас.Взято из /lib/response.js , вот конец
res.send()
функции://. . . // respond this.end(head ? null : body); return this; }
источник
один из примеров, когда вы должны вызвать функцию end (), - это когда вы отправляете буфер в виде файла для загрузки.
источник
Завершает процесс ответа. Этот метод фактически исходит из ядра Node , в частности,
response.end() method of http.ServerResponse.
для быстрого завершения ответа без каких-либо данных.источник