Я столкнулся с проблемой, когда цикл while в моей программе неоднократно выполняется до того, как обещание из -за одной () решается, эффективно пропуская ожидание. Это приводит к тому, что цикл бежит снова и снова, добавляя все больше и больше слушателей событий, пока двигатель V8 в конечном итоге не сбой из -за истощения ресурсов. < /P>
Сам код не станет простым - я использую вспомогательный вспомогатель, чтобы обернуть обещание Once () вместо использования традиционных блоков /улов. В моем коде модуль, который я использую для входа в систему, выводит ошибку в определенной ситуации. Обычно это не должно повлиять на мой код, так как я только прослушиваю событие Loggedon. Тем не менее, кажется, что эта брошенная ошибка каким -то образом заставляет некогда обещание быть пропущенным или вести себя неожиданно.
Это код:
import { EventEmitter } from "events";
import { once } from "events";
(async () => {
const testEvent = new EventEmitter();
let isConnected = false;
while (!isConnected) {
console.log("before await");
const [error, result] = await catchError(once(testEvent, "loggedOn", { signal: AbortSignal.timeout(10 * 1000) }));
console.log("after await");
if (!error) break;
}
})();
< /code>
Функция CatchError < /p>
function catchError Error>(
promise: Promise,
errorsToCatch?: E[],
): Promise {
return promise
.then((data) => {
return [undefined, data] as [undefined, T];
})
.catch((error) => {
if (errorsToCatch === undefined) return [error];
if (errorsToCatch.some((e) => error instanceof e)) return [error];
throw error;
});
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... exhaustion
Node.js: в то время как пропуски в петле ждут и вызывает истощение ресурсов ⇐ Javascript
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как вычислять истощение, используя данные из другого файла, не загруженного в приложении?
Anonymous » » в форуме Python - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-