Node.js: в то время как пропуски в петле ждут и вызывает истощение ресурсовJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Node.js: в то время как пропуски в петле ждут и вызывает истощение ресурсов

Сообщение Anonymous »

Я столкнулся с проблемой, когда цикл 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»