Лодаш не работает как внутренняя функция - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть этот javascript eventlistener (так как $(document).on('scroll...); просто не работает):

document.addEventListener("wheel", function() {}, true);

Теперь у меня есть вещи, которые я хочу делать каждый раз, когда слушательсработал и некоторые налоги, которые я хочу запускать только в определенное время с lodash .Для тестирования я сделал это просто:

_.debounce(function() {
    console.log("triggered");
}, 200);

Вопрос / проблема в том, что он работает, когда я помещаю его в отдельный обработчик событий, например ..

document.addEventListener("wheel", _.debounce(function() {
    "use strict";
    console.log("triggered");
}, 200), true);

.. но когда япоместите его в другой, а остальные как вложенную функцию, подобную этой.

document.addEventListener("wheel", function() {
    "use strict";

    //other code that fires every time the listener is triggered

    _.debounce(function() {
        console.log("triggered");
    }, 200);    
}, true);

.. она вообще не работает.Я ценю каждую идею и помощь!Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Вот пример того, что @CertainPerformance говорит с использованием события 1.

const doBounced = _.debounce(function(v) {
  console.log(v);
}, 200);


document.addEventListener("wheel", function() {
  const n = new Date();
  console.log("triggered");
  doBounced(n);
}, true);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
0 голосов
/ 25 апреля 2018

_.debounce создает отклоненную функцию, но не выполняет ее или привязывает к чему-либо по умолчанию; _.debounce является функцией более высокого порядка, поэтому при вызове она возвращает функцию, которую вы хотите передать в качестве аргумента слушателю. Таким образом, он не работает, когда вы объявляете его внутри функции анонимного слушателя в своем последнем фрагменте.

Если вы хотите прикрепить что-то, что , а не , также так и было отклонено, просто добавьте это отдельно:

document.addEventListener("wheel", _.debounce(function() {
    "use strict";
    console.log("triggered");
}, 200), true);
document.addEventListener("wheel", () => {
  // other code that fires every time the listener is triggered
});
...