Retorno de função com async await

16/01/2021

0

Boa tarde devs, estou estudando sobre JS com Node e Express. estou desenvolvendo uma aplicação que ira consultar dados do auxilio emergencial através da API publica disponibilizada pelo GOV.
Tenho uma função que retorna os dados JSON de um determinado CPF, ela funciona normal se passado somente 1 CPF.
Quando tento chamar essa funçao atreves de outra função, ela somente retorna um erro devido ao AWAIT.

função que faz a consulta na api:

async function getConsultaBeneficiario(data) {
var obj = [];
try {
var url = `http://www.transparencia.gov.br/api-de-dados/auxilio-emergencial-por-cpf-ou-nis?codigoBeneficiario=${data.cpf}&pagina=1`;
var opt = {
headers: { 'chave-api-dados': 'minhaChave' },
};

const response = await axios.get(url, opt);
if (response.data == '' || response.data == null) {
obj = {
cpf: `${data.cpf}`,
nome: `${data.nome}`,
Message: 'sem informação',
};
return obj;
}
obj = response.data;
return obj;
} catch (error) {
console.log(
'Error - erro na consulta do CPF - function getConsultaBeneficiario(cpf)'
);
console.log(error);
}
}

NESTA FUNÇÃO EU FAÇO A CHAMADA A FUNÇÃO ACIMA, PASSANDO ATRAVES DE LOOP, VARIOS CPFs PARA CONSULTA:

async function getListaBeneficioJson() {
var listaBenef = [];
var jsonBenef = `$/json/file.json`;
var data = [];
try {
//le o arquivo q contem os CPFs para consultar na API
var benef = JSON.parse(fs.readFileSync(jsonBenef, 'utf-8'));

// passamos para a função q faz a consulta na API os CPFs
var resut = benef.map((item) => {
console.log('chamando funcao getConsultaBeneficiario');
data.push(await getConsultaBeneficiario(item));
});
} catch (error) {
console.log(error);
}

return listaBenef;
}
Jederson Santana

Jederson Santana

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar