Электронные уведомления: предотвратит ли использование карты для хранения экземпляров уведомлений проблемы со сборщиком Javascript

Форум по Javascript
Ответить
Anonymous
 Электронные уведомления: предотвратит ли использование карты для хранения экземпляров уведомлений проблемы со сборщиком

Сообщение Anonymous »

Я создаю приложение Electron Timer, в котором одновременно могут быть активны несколько уведомлений. Первоначально каждый экземпляр Notification создавался внутри функции, но обработчики событий «click» и «close» не срабатывали. Я подозревал, что это произошло потому, что объект уведомления собирался мусором после завершения функции.
Чтобы сохранить экземпляры живыми, я начал хранить их на карте:

Код: Выделить всё

//Creating Global Map object to Store notifications so they aren't garbage-collected
let notifications = new Map();

async function handleNotification(event, id) {
try {
const notification = new Notification({
title: "Title",
body: "some message",
silent: false,
urgency: "critical",
timeoutType: "never",
});

notifications.set(id, notification);

notification.on("click", () => {
functionToStopAlarm();
notifications.delete(id);
});

notification.on("close", () => {
functionToStopAlarm();
notifications.delete(id);
});

notification.show();
} catch (error) {
console.log(error);
}
}
Я также читал, что хранение объектов на карте потенциально может привести к утечкам памяти, если они не будут удалены должным образом, поскольку карта содержит сильные ссылки.
Мои вопросы:
  • В Electron могут ли объекты Notification, которые были локальными для функции, фактически подвергаться сборке мусора, но все еще видимы, если на них нет ссылок?

    Я пытаюсь подтвердить, действительно ли моя первоначальная проблема была связана со сборщиком мусора.
  • Оказывает ли использование карты JavaScript для хранения экземпляров уведомлений каких-либо существенных последствий для производительности или памяти?

    Особенно в отношении риска утечек памяти, если уведомления не удаляются правильно.
  • Есть ли более подходящий или встроенный способ управления жизненным циклом несколько экземпляров уведомлений в Electron или сохранение их вручную в такой структуре, как Map, это стандартная практика?
В основном я ищу ясность в отношении поведения жизненного цикла, поведения GC и характеристик производительности этих подходов.
Примечание: одновременно может быть несколько уведомлений.
Также: я использовал ИИ, чтобы изменить свой пост, поскольку он основан на мнениях перед этим спасибо.

Подробнее здесь: https://stackoverflow.com/questions/798 ... es-prevent
Ответить

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

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

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

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

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