Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Неправильная последовательность выполения в массиве с перебором (https://javascript.ru/forum/css-html/81846-nepravilnaya-posledovatelnost-vypoleniya-v-massive-s-pereborom.html)

MichaelYT 05.02.2021 12:02

Неправильная последовательность выполения в массиве с перебором
 
Доброго времени суток!
Имеется данный скрипт (спасибо voraa)
let zaprosi = ["Запрос1", "Запрос2", "Запрос3"]
 
const delay = (t) =>new Promise (res => setTimeout (res, t));
 
const findAndClick = async (channelName, td) => {
    while (true) {
        const blocks = Array.from(document.querySelectorAll('div#channel-info'));
 
        let elem = blocks.find((item) => item.innerText.trim().toLowerCase() == channelName.toLowerCase())
 
        if (elem) {
            elem.parentNode.parentNode.querySelector('a#thumbnail').click();
            return;
        } else {
            window.scrollBy(0, 5500);
            await delay (td);
        }
    }
}
 
;(async function () {
    for (const zap of zaprosi) {
        document.querySelector('input#search').value = zap;
        document.querySelector('button#search-icon-legacy').click();
        await findAndClick('НАЗВАНИЕ КАНАЛА', 3000)
    }
})()


Его суть: открыт сайт ЮТУБ. Взял 1ую переменную из "zaprosi", вставил в поисковую строку, нажал на поиск. Далее пошел поиск по странице на наличие определенного канала, если он не был найден - скролл страницы, до тех пор, пока не найдет.
Далее клик по нужному видосу с нужного канала. Далее взял 2ую переменную из "zaprosi" и всё пошло по кругу. Потом третью...

Проблема вот в чем: скролл и поиск запускаются раньше времени, и всё ступорится. Прошу помощи!


Часовой пояс GMT +3, время: 22:27.