JavaScript中我的自定义setInterval()函数中的问题

时间:2018-10-26 19:40:05

标签: 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函数,该时间以毫秒为单位。

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

1 个答案:

答案 0 :(得分:2)

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


更改

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

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