Экспортирует NODEJS получая ответ как '' неопределенный '' - PullRequest
0 голосов
/ 09 февраля 2020

Я использую следующий код:

MYCODE.JS FILE:


function getName() {
  (async ()=>{
  let bodyapi = await axios.get(`www.API-EXAMPLE.com`)
  console.log("You've requested a number with the following ID: " + bodyapi.data.slice(14, 22));
  console.log("You've requested a number with the following NUMBER: " + bodyapi.data.slice(-11));
  const number = bodyapi.data.slice(-11);
  return number;
  })();
}
exports.getName = getName;

Затем, после экспорта, я пытаюсь его использовать.

MYAPP.JS FILE

const number = require('./requestnumber.js');


setTimeout(() => {
    console.log(number.getName());
}, 5000);

Результаты консоли:

undefined
You've requested a number with the following ID: MYID
You've requested a number with the following NUMBER: MYNUMBER

Я хочу 'undefined', чтобы показать как мой номер. Когда я console.log его на MYCODE. JS под asyn c, он показывает желаемое число, но когда я пробую его из asyn c или после экспорта, он отображается как неопределенный.

Кроме того, да, я пытался использовать number.getname() до console.log (g-ing), но я просто не могу сделать это правильно. Я пробовал 4 разных способа, и я продолжаю получать неопределенные. Я не знаю, что делать, потому что API получает около 1-2 секунд, чтобы получить номер и ID, и он работает только под async на MYCODE.js file. Любые идеи, как я могу сделать это без получения экспортированного номера в моем другом файле как undefined?

Ответы [ 2 ]

1 голос
/ 09 февраля 2020

У вас есть анонимная функция внутри функции getName. Эта функция asyn c. поэтому getName fun c возвращает неопределенное значение, прежде чем внутренняя функция вернется. тогда внутренняя функция работает. и распечатать консоль. так что если вы напишите

function getName() {
  let bodyapi = await axios.get(`www.API-EXAMPLE.com`)
  console.log("You've requested a number with the following ID: " + bodyapi.data.slice(14, 22));
  console.log("You've requested a number with the following NUMBER: " + bodyapi.data.slice(-11));
  const number = bodyapi.data.slice(-11);
  return number;
}
1 голос
/ 09 февраля 2020

Mycode. js

async function getName() {
  let bodyapi = await axios.get(`www.API-EXAMPLE.com`)
  console.log("You've requested a number with the following ID: " + bodyapi.data.slice(14, 22));
  console.log("You've requested a number with the following NUMBER: " + bodyapi.data.slice(-11));
  const number = bodyapi.data.slice(-11);
  return number;
}

module.exports = getName;

MYAPP. JS FILE

const getName = require('./requestnumber.js');

(async() => {
  const number = await getName();
  console.log(number);
})();
...