如何访问在另一个函数中异步创建的全局数据数组?

正如标题所示,我只想访问在 getSubURLs() 函数中的 getURLs() 中填充的全局数组数据,以便我可以操作其中的数据。有人可以让我知道我该怎么做吗?提前非常感谢!!


const cheerio = require('cheerio');

const axios = require('axios');


let URL = 'https://toscrape.com';

const urlQueue = [];


const getURLS = async () => {

  await axios

    .get(URL)

    .then((res) => {

      const data = res.data;

      const $ = cheerio.load(data);


      $("a[href^='http']").each((i, elem) => {

        const link = $(elem).attr('href');

        if (urlQueue.indexOf(link) === -1) {

          urlQueue.push(link);

        }

      });

      console.log(urlQueue);

      return urlQueue;

    })

    .catch((err) => {

      console.log(`Error fetching and parsing data: `, err);

    });

};


const getSubURLs = async () => {

  // call urlqueue array here after it finishes being created 

}


getURLS();


MMMHUHU
浏览 116回答 1
1回答

一只名叫tom的猫

不要async与.then语法混合,只与await结果混合:const cheerio = require('cheerio');const axios = require('axios');let URL = 'https://toscrape.com';const urlQueue = [];const getURLS = async () => {    try {        const res = await axios.get(URL);        const data = res.data;        const $ = cheerio.load(data);        $("a[href^='http']").each((i, elem) => {            const link = $(elem).attr('href');            if (urlQueue.indexOf(link) === -1) {                urlQueue.push(link);            }        });        console.log(urlQueue);    } catch (err) {        console.log(`Error fetching and parsing data: `, err);    }};// in case there's no top-level await(async () => {    await getURLS();    // do something about urlQueue})();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript