Когда я console.log массив в блоке finally в get (), не все значения, которые предполагается получить с помощью помощника () не там. Я предполагаю, что это потому, что метод axios является асинхронным. Я подумал, что если бы я использовал ключевое слово await в helper (), он ожидал бы метод, чтобы все значения, которые я хотел, могли быть напечатаны, но этого не произошло. Есть ли способ, которым я могу ждать на вспомогательный метод?
(function get() {
let videoThumbnails = new Array();
axios.get(urlConstants.latestAnimeUrl)
.then((res) => {
if (res.status === 200) {
const html = res.data;
const $ = cheerio.load(html);
const thumbnails = $(".post div a img");
for (let i = 0; i < thumbnails.length; i++) {
let videoThumbnail = new Object;
videoThumbnail.thumbnailLink = thumbnails[i].attribs['data-cfsrc']; //image thumbnail link, thumbnail dimensions if needed
videoThumbnails.push(videoThumbnail);
}
const links = $("a[itemprop=url]")
links.each(async function (i, elem) {
if (i < thumbnails.length) {
videoThumbnails[i].thumbnailTitle = $(this).attr("title");
await helper($(this).attr("href").toString(),videoThumbnails,i);// link to video webpage, but need actual video link
}
});
}
})
.finally(() => {
console.log(videoThumbnails);
});
return videoThumbnails;
})();
function helper(chiaUrl,videoThumbnails,index) {
axios.get(chiaUrl)
.then((response) => {
if (response.status == 200) {
const $ = cheerio.load(response.data);
const videoLink = $("div[id=load_anime] div iframe");
videoThumbnails[index].thumbnailLink = videoLink.attr("src");
}
})
.finally(()=> {
})
}