访问回调中的参数 (javascript)

Accessing arguments within a callback (javascript)

提问人:bugsyb 提问时间:12/21/2021 更新时间:12/21/2021 访问量:46

问:

我正在尝试编写一个“去抖动”函数,但我被困在代码的一个片段中。在下面的代码中,我将回调传递到中,并将其包装在一个函数中。addEventListenerdebounce

这个函数以后会有更多的功能,但现在,我只希望它返回一个函数,该函数将设置毫秒的超时,然后使用参数调用原始函数(在本例中)。delaye

我的问题在函数中显示。我想将“original-args”替换为传递到回调中的实际参数。我如何访问该参数?debouncecallback("original-args")

  button.addEventListener("click", debounce(e => {
    let elem = document.createElement("P"); 
    elem.textContent = "Clicked";
    container.appendChild(elem);
  }, 2000))

  function debounce(callback, delay) {
    return function() {
      setTimeout(() => {
        callback("original-args")
      }, delay)
    }
  }
JavaScript 节点 .js 回调 闭包

评论


答:

0赞 Marco Nisi 12/21/2021 #1

您可以执行如下操作:

button.addEventListener(
  "click",
  debounce(
    (e) => {
      let elem = document.createElement("P");
      elem.textContent = "Clicked";
      container.appendChild(elem);
    },
    2000
  )
);

function debounce(callback, delay) {
  return function (...args) {
    setTimeout(() => {
      callback(...args);
    }, delay);
  };
}

因此,您可以将其传递给去抖动函数。这是一个点差运算符,表示 。...args...argstake any number of arguments and store them inside the variable args