Я пытаюсь создать скрипт с помощью ночных кошмаров, которые могли бы снова и снова нажимать кнопку, например, эту кнопку в нижней части раздела комментариев, которая загружает старые комментарии при каждом нажатии (пример: youtube.com/watch?v=pZISJqJbQuU & list = RDpZISJqJbQuU # t = 3) и остановите, когда больше кнопки не будет нажата.Проблемы с асинхронностью с NightmareJS
Я попытался вызывать оценку, только для того, чтобы метод end() был вызван первым и отменил процесс. Я попытался использовать setTimeout, setInterval, then(), преобразовывая цикл в рекурсию. Каждый раз, когда либо оценивает(), он выполняет свою работу, но не уходит (просто висит) или уходит, прежде чем завершить работу, из-за состояния гонки с помощью end().
Есть ли какой-нибудь опытный пользователь nightmarejs?
function youtube_button_clicker(group) {
var nightmare = Nightmare({
show: true
});
nightmare
.goto(url)
.inject('js', 'jquery-3.1.0.js')
.then(
() => nightmare.
evaluate(function() {
for (i=0;i>LEN;i++)
{ setTimeout(() => { $(button_element).click() }, i * 2000); }
return "done"
}))
.catch(function (error) {
console.error('Search failed:', error);
});
}
Удалить метод .end() и он висит, поставил .END() снова и он пропускает процесс - завершает работу рано. Что я могу сделать ?
Ваш 'setTimeouts' должны быть завернутые в обещания, тогда вам нужно «обещать.все» их, чтобы вы получили событие, когда все закончилось, тогда вам нужно передать обещанное, возвращенное 'all', в' then', чтобы вы могли связать его с другим 'then' или 'end' правильно – slebetman
Не могли бы вы показать мне пример кода? – RetroCode