Где я должен поставить обратный вызов для возврата данных после вызова узла https.request? - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь прочитать содержимое запроса, используя узел http Собственная библиотека

Я хочу сделать запрос POST, который я уже успешно выполняю, но затем использовать сохраненные фрагменты ответа навывести их целиком, используя обратный вызов моей лямбда-функции.

Это мой код:

getData: function (event, context, callback) {

    let inputData = event.body;
    let requestData = Object.assign({}, inputData);

    var dataRequest = 'field='+ requestData.Field1;

    var options = {
        method: 'POST',
        hostname: 'my.hostname.com',
        path: '/', 
        headers: {
            "content-type": "application/x-www-form-urlencoded", 
            "connection" : "keep-alive",
            "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36",  
        }
    };          

    var dataStr = "";
    var req = https.request(options, function (response) {    
            response.on('data', (chunk) => {dataStr += chunk;}); 
            response.on('end', () => {                   
                console.log(response.statusCode + " " + dataStr);
                //(*) causes "hang up socket error" 
                return callback(dataStr); 
            });            
    });

    req.on('error', err => {          
       return callback("request error:" + err);
    })
    req.write(dataRequest);
    req.end(); //maybe req.end(callback(null,dataStr))?;

    //on commented (*) works fine but dataStr string comes empty
    callback(null,dataStr);
}

Где можно разместить обратный вызов для вывода содержимого переменной dataStr в качестве ответа этой конечной точки?.

Спасибо запонимание.

1 Ответ

0 голосов
/ 18 мая 2018

Для вашего кода правильно поместить метод обратного вызова в обратный вызов «end» и «error», который уже существует.Удалите обратный вызов из конца вашего кода.

Вы можете хранить обратный вызов в любом месте вашего кода, но если вы хотите вернуть данные, тогда в этом случае лучше сохранить внутренний обратный вызов этой функции.

Еще одна вещь,обратный вызов не завершит выполнение вашего кода, пока вы не вернетесь к основному обработчику

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...