Я столкнулся с проблемой, когда цикл 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
Форум по Javascript
1749463087
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;
});
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79658644/node-js-while-loop-skips-await-and-causes-resource-exhaustion[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия