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 шт):

Автор решения: Grundy

С текущим кодом то, что ты хочешь сделать, не имеет смысла, потому что 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';
}
→ Ссылка