Javascript 将滚动事件数据传递到油门功能

Javascript 将滚动事件数据传递到油门功能,javascript,addeventlistener,throttling,Javascript,Addeventlistener,Throttling,我正在尝试使用wheel事件和throttle函数创建我自己的简单全高滚动脚本(因为我只希望每X毫秒注册一次滚动。我希望将wheel事件的事件数据传递到被我的throttle()函数限制的函数中 以下是我的代码的简化版本: function throttle(callback, limit) { var wait = false; // Initially, we're not waiting return function () { // We return a throttl

我正在尝试使用
wheel
事件和throttle函数创建我自己的简单全高滚动脚本(因为我只希望每X毫秒注册一次滚动。我希望将
wheel
事件的事件数据传递到被我的
throttle()
函数限制的函数中

以下是我的代码的简化版本:

function throttle(callback, limit) {
    var wait = false; // Initially, we're not waiting
    return function () { // We return a throttled function
        if (!wait) { // If we're not waiting
            callback.call(); // Execute users function
            wait = true; // Prevent future invocations
            setTimeout(function () { // After a period of time
                wait = false; // And allow future invocations
            }, limit);
        }
    }
}

function onScroll(event) {
  // do stuff here on scroll
}

window.addEventListener('wheel', throttle(onScroll, 700), false);
如果我不需要
控制盘
事件中的数据,但我需要使用
event.deltaY
确定
onScroll()函数
中的滚动方向,这将很好地工作

基本上,我想将最后一行更改为以下内容(尽管我知道这行不通):

window.addEventListener('wheel',throttle(onScroll(event),700),false);

所以…

如何将
控制盘
事件数据传递到
onScroll()
函数中,同时仍对其进行节流

我所尝试的:

我尝试了以下代码,以便将
事件
数据传递到
throttle()
函数中,该函数成功运行

window.addEventListener('wheel', function(e) {
  throttle(onScroll, 700, e)
}, false);
但是我不知道如何处理
e
我的
throttle()
函数中的
e
才能将其传递给
onScroll()
函数。我尝试使用以下命令更改行:

callback.call();//执行用户函数

致:

callback.call(e);//执行用户函数
(使用传递到throttle函数中的
e


但是这阻止了
onScroll
函数被调用…(我假设因为
throttle()
正在返回一个函数,但是这个返回的函数没有被调用,因为它被包装在
eventListener
?)中的另一个函数中。

只传递参数:

function throttle(callback, limit) {
  var wait = false;
  return function (...args) { 
    if (!wait) {
        callback(...args);
        wait = true; 
        setTimeout(function () { 
            wait = false; 
        }, limit);
    }
  }
}

只需通过以下参数:

function throttle(callback, limit) {
  var wait = false;
  return function (...args) { 
    if (!wait) {
        callback(...args);
        wait = true; 
        setTimeout(function () { 
            wait = false; 
        }, limit);
    }
  }
}

那么
window.addEventListener…
行应该是什么样子?@jj
window.addEventListener('wheel',throttle(onScroll,700),false);
如何将事件数据传递到onScroll函数中?我应该用什么替换“…args”?没有事件数据传递到
throttle()
使用您编写的代码,因此没有参数要传递…@jj确实如此,…
onScroll
将被调用,第一个参数是事件。好的,对不起,我道歉,我以前从未遇到过
…args
,因此对此感到困惑,我接受您的答案,但最好包含整个更新的内容代码片段+指向
…args
或其他解释的链接,谢谢!:)以及
窗口。addEventListener…
行应该是什么样子?@jj
窗口。addEventListener('wheel',throttle(onScroll,700),false)如何将事件数据传递到onScroll函数中?我应该用什么来替换“…args”?没有使用您编写的代码传递到
throttle()
的事件数据,因此没有要传递的参数…@jj它是这样做的
onScroll
将被调用,第一个参数是eventAh好的,对不起,我以前从未遇到过
…args
,因此对此感到困惑,我接受你的回答,但最好包含整个更新的代码片段+指向
…args
或其他解释的链接,谢谢!)