如何在返回之前等待函数的内部过程完全执行?

问题描述 投票:0回答:1

我正在尝试使用来获取网页,但是我无法检索所有数据,因为即使在完成内部过程之前,函数都会返回。我正在使用ReactJS,当我单击页面中的按钮时,此函数被调用:analyse = async(e) => { this.a = await axios.get('xxx'); this.s = await axios.get('yyy'); this.f = await axios.get('zzz'); let aReturn = this.fetchA(this.a.data); let sReturn = this.fetchS(this.s.data); let fReturn = this.fetchF(this.f.data); if(await fReturn === true && await aReturn === true && await sReturn === true){ anotherFunction(); } } 在上面的代码中,axios运行良好,并且函数fetchA()fetchS()是简单的函数,没有任何进一步的内部函数调用:

fetchA(html){
    const $ = cheerio.load(html);

    //some process

    return true;
}

fetchS(html){
    const $ = cheerio.load(html);

    //some process

    return true;
}

未完全执行而返回的函数为fetchF()

fetchF(html){
    const $ = cheerio.load(html);

    $('div._someClassName').children().each((i,elem) => {

    let link = $(elem).find('a').first().attr('href');

    axios.get(link)
    .then(response => {

        this.deepF(response.data);
    })
    .catch(err => {
        console.log("Error : ",err);
     })

    };
    return true;
}

在上面的函数中,每个孩子都有一个唯一的链接,我需要再次链接到axios.get(),然后调用另一个函数deepF()来获取该页面的数据。内部函数

deepF还是一个小函数:

deepF(html){ const $ = cheerio.load(html); //some process return true; } 在整个代码中,fetchF()返回的是true,而没有在内部完全执行所有deepF()功能。

注:deepF()返回真之后,所有fetchF()函数都会缓慢执行

fetchF()中返回true之前,我如何等待deepF()执行所有内部fetchF()

我正在尝试使用axios和cheerio来获取网页,但是即使在完成内部过程之前,由于函数正在返回,我也无法检索所有数据。我正在使用ReactJS和...
reactjs promise callback cheerio asynchronous-javascript
1个回答
1
投票
更改此:
© www.soinside.com 2019 - 2024. All rights reserved.