干杯。处理另一个函数的错误后无法在 TRY 体内获取数据

Cheerio. Can't get data inside TRY body after handling error of another function

有这样一个代码:

const axios = require('axios');
const cheerio = require('cheerio');
let data = null;



const parseNewCorporations = async (iter) => {
  
  let link2 = 'https://www.finanzen.net/aktien/' + iter.finanzen_net + '-aktie';
  try{
    await axios.get(link2)
      .then(res => res.data)
      .then(res => {
        
        let html = res;
        
        $ = cheerio.load( html, { decodeEntities: false } );
        let bigData = iter;
        
        let price = $('div.snapshot-headline div.col-sm-7 div.row.quotebox:first-child div.col-xs-5.col-sm-4.text-sm-right.text-nowrap').text();
        let currency = $('div.snapshot-headline div.col-sm-7 div.row.quotebox:first-child div.col-xs-5.col-sm-4.text-sm-right.text-nowrap span').text();
        price = price.replace(currency, '').replace(',', '.');
      })
  }
  
  catch(e){
    console.log(e.message, ', id =', iter.id, ", finanzen_net = "+iter.finanzen_net);
    await getAdditionPriceBilanzGuv(iter);
  }
};



const getAdditionPriceBilanzGuv = async (iter) => {
  
  //console.log('111', iter); // **here the code works correctly**
  
  let link = 'https://www.finanzen.net/bilanz_guv/'+ iter.finanzen_net;
  
  try{
    await axios.get(link)
      .then(res => res.data)
      .then(res => {
        
        console.log('getAdditionPriceBilanzGuv', iter);
        // **here the code works NOT correctly**
        
      })
  }
  
  catch(e){
    if(e.message == 'Request path contains unescaped characters'){
      console.log('Request path contains unescaped characters');
      console.log({paramSubLink: iter.finanzen_net, corporations_id: iter.id});
    }
    else{
      console.log('paramCorporationsId: ', iter.id);
      //console.log('err- ', e);
    }
  }
};



function getApiData(){
  
  // get request
      return axios.get("https://seo-gmbh.eu/invest/daily.php" , {
      })
      .then(response => {
        return response.data;
      })
      .catch(function (error) {
        console.log(error);
      });
}



async function new_corporations() {
    data = await getApiData();
    let ii = 1;
    for (let iter of data.new_corporations) {
        //await parseNewCorporations(iter);
        
        ii++;
        await setTimeout(function(){
            parseNewCorporations(iter);
        }, ii*3000);
        

    }
    //console.log(arrayCurrency);
}


new_corporations();



调用parseNewCorporations ()函数后,触发catch ()异常 可以在控制台中看到相应的消息。

问题是当这个错误出现时,你需要运行下面的函数getAdditionPriceBilanzGuv ()带有iter参数,而在try {}的函数体内你需要得到这个参数,这是做不到的。

在此函数的最开始(在 try {} 的主体之外)(通过注释表明代码有效),可以获得此参数。
问题:
我缺少什么以及如何在 try {} 主体内新调用的函数中获取此参数?

如果无法做到这一点,有什么替代实现可以解决这个问题?

P.S。在这种情况下,使用解析库cheerio

如果你使用async/await,你不需要thens

let res = await axios.get(link2)
let $ = cheerio.load(res.data)