как получить данные для объекта при вызове API использовать https.request в nodejs - PullRequest
0 голосов
/ 29 сентября 2019

я пытаюсь получить данные в переменную 'results', когда вызываю API другого, но неопознанного

let results;
const req = https.request(options, (res) => {

      res.setEncoding('utf8');
      res.on('data', (body) => {
         results = JSON.parse(body).payUrl;
      });

      res.on('end', () => {
         console.log('No more data in response.');
     });
});
console.log(results);

results = unidentified

1 Ответ

0 голосов
/ 29 сентября 2019

In https.request(options,(res)=>{}) res - это поток, который отправляет данные в чанке по событию 'data'. Таким образом, вы не получите полные данные за один раз. Вы изменяете код следующим образом:

  let results;
  let url;
  const req = https.request(options, (res) => {
          res.setEncoding('utf8');
          let body="";
          res.on('data', (chunk) => {
           body = body+chunk   // aggregate data
          })
          res.on('end', () => {
           // once data is completly fetched do JSON.parse();
            console.log('No more data in response.')
            results = JSON.parse(body);
            console.log(results)
            url =  results.url
            console.log(url);
         })

      });
      req.on('error', (e) => {
         // listen for error 
          console.log(e.message);
       });

Кроме того, https.request(options,(res)=>{}) - это асинхронный вызов, поэтому console.log(results) в вашем коде будет выполняться даже до завершения вызовов API.

...