Как сбросить все переменные в памяти, используя Nodejs

Может быть, мой вопрос не совсем правильный, но в основном мне нужно знать самый простой способ сброса всех моих переменных в приложении js моего узла с помощью узла cron пакета npm ( https://www.npmjs.com/package/node-cron).

Тем не менее, я думаю, что это происходит только с моими массивами.

Пакет работает отлично... Моя функция работает с запланированным интервалом, но при каждом запуске она не освобождает переменные предыдущих запланированных задач из памяти. По сути, кажется, что я добавляю каждую итерацию в последнюю.

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

Пример:(запускать функцию каждую минуту)

var cron = require('node-cron');

cron.schedule('* * * * *', function(){
  myFunction();
});

Как упоминалось выше, функция myFunction() запускается каждый раз через библиотеку node-cron. Однако переменные внутри этой функции, по-видимому, не освобождаются из памяти при каждом запуске запланированной задачи cron.

Есть идеи?

Спасибо!

2 ответа

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

В Javascript нет такого соглашения или функции для освобождения всех переменных.

Если вы объявите переменные правильно в пределах функции или блока, то эти переменные будут существовать только до тех пор, пока эта область жива. Если вы не правильно объявите свои переменные с const, let или же varтогда они могут стать случайными глобальными переменными и жить в течение всего приложения.

Сделай это так:

function myFunction() {
    // declare variables to be local to your function
    let x = 2;

    // bunch of other code that uses x

}

Потом каждый раз myFunction() будет запущена, будет новая версия x это не имеет ничего общего с предыдущей версией x а сборка мусора Javascript очистит старые версии, которые больше не используются.

Если вам нужна более конкретная помощь с вашим кодом, покажите нам код, который использует переменные, с которыми у вас возникают проблемы.


Если вы делаете это так:

function myFunction() {
    // declare variables to be local to your function
    x = 2;

    // bunch of other code that uses x

}

Затем, x становится случайной глобальной переменной и такой же x переменная будет использоваться во всех вызовах myFunction(), Это анти-паттерн в Javascript, и на самом деле, Javascript теперь имеет strict режим, который даже делает это ошибкой из-за того, как это зло. Преднамеренные глобальные переменные должны быть явно объявлены как глобальные. Все остальные переменные должны быть преднамеренно объявлены в соответствующей функции или области видимости const, let или же var,

Как сказал jfriend00, я, должно быть, использовал функцию с переменными, которые случайно стали глобальными. В итоге я переписал рефакторинг и смог решить, теперь сервис работает отлично. благодарю вас

Другие вопросы по тегам