Как вытащить значение из Axios + (TRY - CATCH) + async await?

Есть такой код:

const fs = require('fs');
const axios = require('axios');
const cheerio = require('cheerio');


const parseBilanzGuv = async (param) => {
      
  let link = 'https://www.finanzen.net/suchergebnis.asp?_search=' + param;
      
  try{
    await axios.get(link)
          
      .then(res => res.data)
      .then(res => {
            
        let html = res;
        $ = cheerio.load( html, { decodeEntities: false } );
            

        return {symbol: 'значение'};
            
      })
          
        
      .catch(err => console.log(err));
  }
      
  catch(e){
    console.log("err- ", e);
  }
      
};
    
    
parseBilanzGuv('US30161N1019').then(function(result) {
   console.log(result); // undefined
});

При попытке получить возвращаемое значение из функции parseBilanzGuv() - получаю undefined.

Вопрос:
Что необходимо изменить в коде, что бы вытащить значение symbol: 'значение'; стало возможным?


Ответы (1 шт):

Автор решения: vsemozhebuty

Если не ошибаюсь, вы ведь ничего не возвращаете из функции parseBilanzGuv(). Поставьте return вместо await перед axios.get(link), чтобы вернуть результирующий Promise.

Хотя ещё лучше, наверное, не смешивать цепочки промисов и async/await, то есть заменить цепочку на ряд await и вернуть уже {symbol: 'значение'}, так будет последовательнее.

const parseBilanzGuv = async (param) => {
  let link = 'https://www.finanzen.net/suchergebnis.asp?_search=' + param;
  try {
    const res = await axios.get(link);
    const html = await res.data;
    $ = cheerio.load(html, { decodeEntities: false });
    return { symbol: 'значение' };
  } catch(e) {
    console.log('err- ', e);
  }
};
→ Ссылка