Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 18.12.2021
Сообщений: 13

Проблема с декораторами

25.02.2022, 13:42. Показов 1050. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В задерживающих декораторах по прежнему осталась проблема. Если у вас выполняется вызов впервые, то timer равен null и ваше условие истино. Вызывается синхронный вызов, подготавливается асинхронный (создаётся таймаут), это всё верно, но на последующий вызов декорированноый функции в timer уже не будет значения null, а следовательно все действия будут проигнорированы (включая действия задерживающего декоратора)…Вам нужно в случае if (timer === null) { выполнять только синхронный вызов функции. Действия по удалению таймаута и создание нового (таймаута) не должны быть под влиянием переменной timer.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
function cachingDecoratorNew(func) {
  let cache = [];
 
  function wrapper(...args) {
    const hash = args.join(',');
    let idx = cache.findIndex((item) => item.hash == hash);
    if (idx !== -1) {
      console.log("Из кэша: " + cache[idx].value);
      return "Из кэша: " + cache[idx].value;
    }
 
    let result = func(...args);
    cache.push({
      'hash': hash,
      'value': result
    });
    if (cache.length > 5) {
      cache.shift();
    }
    console.log("Вычисляем: " + result);
    return "Вычисляем: " + result;
  }
  return wrapper;
}
 
 
function debounceDecoratorNew(func, ms) {
  let timer = null;
 
  function wrapper(...args) {
    if (timer === null) {
      func(...args);
      clearTimeout(timer);
      timer = setTimeout(() => func(...args), ms);
    }
  }
  return wrapper;
}
 
function debounceDecorator2(func) {
  let timer = null;
 
  function wrapper(...args) {
    if (timer === null) {
      func(...args);
      clearTimeout(timer);
      timer = setTimeout(() => func(...args), ms);
    }
    wrapper.count++;
  }
  wrapper.count = 0;
  return wrapper;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.02.2022, 13:42
Ответы с готовыми решениями:

Проблема с параметрами обьектов класса и декораторами
как определить тип параметров обьектов класса? 1.обязательные, неизменяемые 2.не обязательные, изменяемые 3.и если они->...

Проблема с кодом. Выдает ошибку, я не могу понять в чем проблема
Работаю первый раз с Maple. Установлен версии 2015 года. Выдает ошибку я не могу понять в чем проблема Вот код: restart: ...

Проблема со скоростью интернета(проблема точно не в роутере и кабеле, а соответственно в пк)
Доброй ночи всем! Поздравляю всех с Новым годом! Но теперь я попрошу вас о помощи! Давно замечал, что скорость интернета на пк крайне...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.02.2022, 13:42
Помогаю со студенческими работами здесь

проблема при работе с китайским J-LINK 8 или же проблема с с
Всем привет. Решил Сам собрать себе дисковери кит на базе at91sam7s64-ek. Подарили мне китайский J-Link 8 c прошивкой 3.20. Недолго...

Проблема с пингом, проблема которой не могу объяснить
Такая ситуация стряслась, поменяли роутер, у всех все нормально, но у меня на ноутбуке прыгает пинг в произвольном порядке, это вместе с...

Проблема с Linux Mint 20(А может и не проблема)
Когда нажимаю на sk Hynix появляется это окошко(так должно быть или нет)?

Проблема применимости и проблема останова
Привет! Как бы я не бился - никак не могу понять проблему останова и применимости алгоритмов в целом. Хочу попросить прям полное объяснение...

Проблема с if. Проблема с восстановлением времени
Я делаю 2д игру. При конце игры, если игрок побеждает нужно начислить его очки. Если он заработал их меньше то оставить преждний рекорд. Но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru