Весь прошедший день я пытался выяснить ошибку, которую я вызвал, сделав Gridgoal более эффективным. Раньше я выделял большой объем памяти для хранения всего ежедневного прогресса пользователя. Для Gridgoal, который длится 7 дней, прогресс будет выглядеть следующим образом:

{ День 0: 200, День 1: 450, День 2: 55, День 3: 0, День 4:0, День 5:0, День 6:0,}

Если цель длилась 365 дней, я создал 365 пар ключ:значение, инициализированных значением 0. Это проблема. Будет много потраченной памяти, и она просто раздула все. Но я использую объект прогресса для расчета всего на странице.

Поэтому я внес изменения и инициализировал объект прогресса в {}. Затем, когда кто-то добавляет действие, скажем, «день 4», он добавит «день 4» к объекту прогресса.

Чтобы проиллюстрировать проблему, предположим, что у вас есть движущийся фургон, в котором должно быть 365 пустых мест. Когда вы выполняете действие с помощью Gridgoal, вы, по сути, вызываете определенное место в движущемся фургоне и добавляете количество активности в это место. Это то, что делает код ниже.

Если вы помните сверху, я заранее перестал выделять место для движущегося фургона, но я все еще пытался найти место в несуществующем движущемся фургоне. Я не получал ошибку, но поведение не работало только на первом поведении. Объект будет заполнен нулем, а затем при втором использовании все будет в порядке. Но как только проблема была обнаружена, это было так же просто, как добавить проверку, был ли объект прогресса пустым. См. код ниже.

Теперь Gridgoal работает фантастически и очень эффективно использует память. Взгляните на GridGoal.com