Я использую HTTP-запрос follwing в моем коде Angular JS
$http.get('http://my url/.../')
.success(function(data, status, headers, config){
console.log('response',data);
})
.error(function() {
console.log('Error');
});
и в моем узле JS я использую
response.write(data);
где я могу получить это значение данных. Потому что я не получаю никакой консоли с данными. Если я использую
response.send(data);
то я получаю консольный журнал из моего JS файла с данными
Данные отправляются в обоих случаях. Только метод send
закрывает соединение.
Проблемы состоят в том, что обратный вызов success
выполняется только после завершения запроса. Метод write
отправляет данные клиенту, но не выполняет запрос. Клиент все еще ждет, пока сервер скажет: "Хорошо, что все сообщение, и больше нечего отправлять". Пока сервер не сделает этого, обратный вызов success
не будет запущен.
Метод send
(и метод end
) закрывает соединение. Когда соединение закрывается, выполняется метод success
.
кажется, что вы хотите отправить непрерывный поток данных (так как вы не хотите прекращать соединение), и в этом случае вы можете регистрировать события progress
XHR. К сожалению, интерфейс $http
настоящее время не показывает события progress
.
Я предполагаю, что вы используете Express с узлом. С response.write
вы просто пишете ответ, не отправляя его. Затем вам нужно вызвать response.end
чтобы сказать: "этот ответ готов, отправьте его". response.send
пишет и отправляет ответ.
response.send(data);
такой же как:
response.write(data);
response.end();
Это должно быть просто:
response.end(data);
Вы должны закончить его, чтобы сбросить ответ.