Promise перезапуск функции
Начал изучать Promise, и столкнулся с некоторым недопониманием. У меня есть основная функция, где выполняются все действия. В переменную wait сохраняется результат промиса который относится к модулю puppeter: await page.waitForSelection('CSSselector'); (в документации написано, что если он не находит селектор, то возвращает null). Далее я проверяю, wait === null, если условие выполняется, то запускается await Promise.all([page.waitForNavigation()]); и возвращаю resolve('text');. И теперь главное, в условии else я хочу вывести в консоль error надпись и снова проверить является ли wait === null и так, пока условие не выполнится.
let wait = await page.waitForSelection('CSSselector');
await new Promise(async (resolve, reject) => {
if (wait === null) {
await Promise.all([page.waitForNavigation()]);
resolve('text')
{ else {
console.log('error');
}
}
Ответы (1 шт):
С текущим кодом то, что ты хочешь сделать, не имеет смысла, потому что wait - это результат promise, следовательно он больше не изменит значение.
Если требуется заново присвоить переменной wait результат await page.waitForSelection('CSSselector'), то напрашивается обычный цикл, внутри асинхронной функции
async function fun(){
for(let wait = await page.waitForSelection('CSSselector'); wait != null;wait = await page.waitForSelection('CSSselector')){
console.log('error');
}
await page.waitForNavigation();// нет нужды в `.all` - потому что в массиве всего один элемент.
return 'text';
}