Кукольник как предотвратить остановку программы при ошибке

#node.js #ecmascript-6 #puppeteer

#node.js #ecmascript-6 #кукловод

Вопрос:

Непосредственно к проблеме, которую я заметил при создании автоматов кукольника. Я проверяю, существует ли такой элемент:

 const check = async () => {
  let state = null
  await page.waitForSelector(els.configurationBtn)
    .then(res => res ? state = true : state = false)
    .catch(() => { state = false })
    enter code here

  return state
}
 

Но это не простой способ предотвратить остановку программы при page.waitForSelector возникновении ошибки.

Мой вопрос в том, как я могу дождаться элемента (проверить, существует ли он) и вернуть логическое значение — true если элемент существует и false, если элемент не существует или когда page.waitForSelector выдает ошибку тайм-аута.

Ответ №1:

Если вы используете await , вы можете просто использовать try...catch . Нет необходимости в .then или .catch … в этом весь смысл использования await в первую очередь.

 const check = async () => {
  try {
    return await page.waitForSelector(els.configurationBtn) != null;
  } catch {
    return false;
  }
}
 

Или просто используйте .then и передайте ему второй аргумент. Вторая функция вызывается, когда обещание отклоняется.

 const check = () => page.waitForSelector(els.configurationBtn)
  .then(res => res != null, () => false);