Я вызываю асинхронную функцию внутри функции http-запроса. Называется асинхронная функция делает еще один запрос HTTP, но запрос HTTP выдает ошибку Error: socket hang up
Ошибка асинхронной функции Ошибка: сокет повесил трубку
код
var http = require("http");
var fs = require('fs');
var url_1 = "en.wikipedia.org";
var url_2 = "www.twitter.com";
var options = { host: url_1, port: 80, path: '', method: 'POST'};
var api_options = { host:url_2, port: 80,path: '',method: 'POST' };
function async(arg, callback) { //async function declaration
console.log("received argument "+ arg);
http.request(options, function(res){ //http request to url_2
console.log("also the second http request successful");//this log not getting printed, insted http.request function in the previous line throws Error : socket hang up
return callback(arg);
});
}
http.request(options, function(res) { //http request url_1
console.log("first http request successful");
async("1",function(return_value){ //calling asynchronous function
console.log("count : "+ return_value + " returns callback");
});
}).end();
В приведенной выше коде первый я делаю запрос HTTP для url_1
, После запроса ввода я вызываю вызов функции async
, которая пытается выполнить http-запрос url_2
, но url_2
http-запрос внутри функции async
просто возвращает ошибку, о которой я упоминал выше.
Результат
first http request successful
received argument 1
events.js:141
throw er; // Unhandled 'error' event
^
Error: socket hang up
at createHangUpError (_http_client.js:203:15)
at Socket.socketOnEnd (_http_client.js:288:23)
at emitNone (events.js:72:20)
at Socket.emit (events.js:166:7)
at endReadableNT (_stream_readable.js:905:12)
at doNTCallback2 (node.js:441:9)
at process._tickCallback (node.js:355:17)
Process exited with code: 1
Я новичок в Node.js, поэтому, пожалуйста, простите, если это глупый вопрос
Он задает вопрос: Правильно ли работает 'url_2', при любых условиях? – Richard
Я не мог тебя достать, при любых условиях в смысле ??? , не могли бы вы, пожалуйста, более подробно –
Вполне возможно, что 'url_2' закрывает TCP-соединение, по какой-то причине это не имеет никакого отношения к вашему коду. Можете ли вы прямо называть 'url_2' и получить результат? Такая ошибка выглядит так, как будто ваш запрос некорректен. – Richard