Node.js не может обработать мой клиентский код, который выполняет что-то похожее на шаблон XHR jQuery / Zepto:
$.ajax({
type: 'POST',
url: '/someUrl',
success: function(response) {
$.ajax({ // ... do another XHR
Я сделал это (инициировал шаблон XHR в другом запросе XHR)раньше в других рамках.Я прочитал о Node.js Ошибка: не удается установить заголовки после того, как они отправлены и как работает основанная на событиях модель сервера Node.js.Другими словами, первый запрос XHR не вызвал res.end (), поэтому, когда второй запрос XHR называется Node.js, жалуется (в непрерывном цикле между прочим).
Мои вопросы: сможет ли кто-нибудь порекомендовать альтернативный шаблон для цепочки запросов XHR на стороне клиента?Могу ли я что-нибудь сделать на стороне сервера Node.js, чтобы сохранить существующий шаблон на стороне клиента?
Обновление на основе принятого ответа Ошибка, конечно, в моем собственном коде на стороне сервера.Простая функция проверки выдает ошибку, но при ее обнаружении вызывается только res.end ().По какой-то причине предположение, которое я вызывал res.end (), немедленно остановило бы выполнение функции.В этом случае вставка 'return' останавливает выполнение сразу после отправки клиенту сообщения JSON.
if (_.isEmpty(req.body)) {
res.end(JSON.stringify({'Error':'POST required'}));
// suppose 'return' is needed here as well
return
} else {
try {
if (_.has(req.body, 'id')) {
id = parseInt(req.body['id']);
} else {
throw {'Error':'Missing param in req.body'};
} // end if
} catch(err) {
res.end(JSON.stringify({'Error':'Missing key(s)','Keys':_.keys(req.body)}));
// without a return here, the code below this 'do some more work' would
// be executed
return
} // end else
// do some more work
// without the above 'return''s the code would
// a) make a database call
// b) call res.end() again!!! <-- bad.