javascript - JavaScript 中的自定义 setInterval() 函数出现问题

标签 javascript web try-catch settimeout setinterval

这里我制作了一个自定义 setInterval 函数,但它没有按预期工作。

function interval(func,ti,f){
if(f==0||f==undefined){
    try{                  //calls the function provided as argument.
        func.call();
    }
    catch(err){            //if error occurs
        alert('error occured!'); //edited       
        throw new Error("error occured!!");//edited

    }
    setTimeout(interval(func,ti,f),ti);
   }
}

这背后的主要思想是用户调用该函数有点像这样:

interval(()=>{
   console.log('hello world');
 },10000);

由于我没有传递f的值,所以它是未定义 因此它满足并进入 if 语句。现在,当 try{} 调用该函数时,它就会执行。问题是我通过将参数作为函数 interval()ti(以毫秒为单位的时间)传递来调用 SetInterval 函数。

因此它应该在 ti 时间后调用函数 interval(),但它没有这样做。

最佳答案

setTimeout需要一个函数,您正在传递函数调用的值。

<小时/>

改变

setTimeout(interval(func,ti,f),ti);

setTimeout(() => interval(func,ti,f),ti);

关于javascript - JavaScript 中的自定义 setInterval() 函数出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53015333/

相关文章:

java - ServletContextListener 错误

java - 返回整数或 double 时如何确保 catch 返回值不同于 try 返回值

PowerShell 尝试/捕获并重试

javascript - 显示来自嵌套路由的组件数据 - Angular

python - django 对于联系我们网站来说是不是太过分了?

javascript - 如何使用拖放字段 html5 jquery 创建消息模板

ReactJs 安全性

javascript - Catch语句未捕获引发的错误

javascript - 嵌套 foreach jquery child

javascript - 如何将 javascript 数组序列化为 html 属性并使用 jquery 取回它?