@ojiekcahdp

Как исправить ошибку?

Вот мой код:
function relOnline() {
util.status('test')
	.then((response) => {
		if (response.onlinePlayers > botOnlineMatch.maxOnline) {
			botOnlineMatch.maxOnline = response.onlinePlayers
		}
		if (response.onlinePlayers > botOnlineMatch.dayOnline) {
			botOnlineMatch.dayOnline = response.onlinePlayers
		}
	})
}

setInterval(relOnline, 500)


В консоли появляется ошибка:
node:internal/process/promises:227
          triggerUncaughtException(err, true /* fromPromise */);
          ^

[UnhandledPromiseRejection: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason "undefined".] {
  code: 'ERR_UNHANDLED_REJECTION'
}


С чем это может быть связано и как это можно исправить?
  • Вопрос задан
  • 2864 просмотра
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
не ловится исключение в цепочке промисов. После .then() добавьте что-то типа
.catch(err => console.error(err))
;

Ну и в целом здесь так-себе момент со временем: раз в пол-секунды запускается нечто асинхронное, что может и долго выполняться, дольше чем пол-секунды. И начнут накапливаться накладки.

Лучше в конце цепочки делать вызов следующей итерации через timeout:
util.status('test')
  .then(...)
  .then(() => setTimeout(relOnline, 500)
  .catch((err) => console.error(err))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы