我正在尝试使用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()
?