получить первые два байта http.get Node.js - PullRequest
0 голосов
/ 03 февраля 2019

Мне нужны первые два байта http.get (для магического изменения) в лямбда-функции AWS.это мой код:

exports.handler = (event, context, callback) => {
var https = require('https');
var url= "https://mail.google.com/mail/u/0/?ui=2&ik=806f533220&attid=0.1&permmsgid=msg-a:r-8750932957918989452&th=168b03149469bc1f&view=att&disp=safe&realattid=f_jro0gbqh0";


var result= https.get(url , (resp) => {
    let data = '';

    // A chunk of data has been recieved.
    resp.on('data', (chunk) => {
      data += chunk;
    });

    // The whole response has been received. Print out the result.
    resp.on('end', () => {
    });

    }).on("error", (err) => {
       console.log("Error: " + err.message);
    });

    callback(null, '3');// I want to return the first two bytes...
};

есть идеи?большое спасибо !!

1 Ответ

0 голосов
/ 04 февраля 2019

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

resp.on('data', (chunk) => {
  data += chunk;
  var data = // here you may have the data you need, either call the callback temporarily or execute the callback immediately
  callback(null, data);
});

или дождитесь окончания resp:

resp.on('end', () => {
  // pass the temporarily stored data to the callback
  callback(null, data);
});

или если resp приведет к ошибке:

resp.on("error", (err) => {
   console.log("Error: " + err.message);
   callback(err);  // make sure to let the caller of Lambda know that the request failed
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...