Как вернуть ответ из http модуля в Node.js? - PullRequest
0 голосов
/ 11 сентября 2018

Как вернуть значение ответа, access_token , в переменную для использования в другом месте? Он выдает неопределенное значение, если я пытаюсь зарегистрировать его значение вне res.on('data') listener.

const http = require('http');
const authGrantType = 'password';
const username = '[The username]';
const password = '[The password]';
const postData = `grant_type=${authGrantType}&username=${username}&password=${password}`;
const options = {
  hostname: '[URL of the dev site, also omitting "http://" from the string]',
  port: 80,
  path: '[Path of the token]',
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
  }
};
const req = http.request(options, (res) => {
  console.log(`STATUS: ${res.statusCode}`); // Print out the status
  console.log(`HEADERS: ${JSON.stringify(res.headers)}`); // Print out the header
  res.setEncoding('utf8');
  res.on('data', (access_token) => {
    console.log(`BODY: ${access_token}`); // This prints out the generated token. This piece of data needs to be exported elsewhere
  });
  res.on('end', () => {
    console.log('No more data in response.');
  });
});
req.on('error', (e) => {
  console.error(`problem with request: ${e.message}`);
});

// write data to request body
req.write(postData);
req.end();

Значение токена заносится в консоль строкой, которая гласит: console.log(`BODY: ${access_token}`); Проблема заключается в попытке извлечь это значение для использования в другом месте. Вместо того, чтобы инкапсулировать каждую новую функцию с помощью вызова HTTP внутри другого вызова, который требовался для ее замены и предоставления ответа до того, как она может продолжиться. Это своего рода синхронизация в NodeJS.

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