我正在尝试将参数传递给setInterval函数,如下所示

load(value) {
        let checkedValue = value;;
        let checkExist = setInterval(function (checkedValue ) {
            if ((document.getElementsByClassName("switch")).length > 0) {
                ($(".switch") as any).kendoSwitch({
                    checked: checkedValue
                }).data("kendoSwitch");
             clearInterval(checkExist);
            }
        }, 100)
    }


CheckedValue在这里无法访问,正确的方法是什么?

最佳答案

setInterval将所有无关的参数传递给回调函数:

   let checkExist = setInterval(function (checkedValue) {
        if ((document.getElementsByClassName("switch")).length > 0) {
            ($(".switch") as any).kendoSwitch({
                checked: checkedValue
            }).data("kendoSwitch");
         clearInterval(checkExist);
        }
    }, 100, checkedValue); // Note checkedValue is passed as the final parameter


但是,您可以依靠闭包来完成这项工作

  load(value) {
    let checkExist = setInterval(function () {
        if ((document.getElementsByClassName("switch")).length > 0) {
            ($(".switch") as any).kendoSwitch({
                checked: value
            }).data("kendoSwitch");
         clearInterval(checkExist);
        }
    }, 100)
  }

10-06 08:23