在这里,我做了一个自定义的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
,但它没有这样做。
答案 0 :(得分:2)
setTimeout
需要一个函数,您正在传递函数调用的值。
更改
setTimeout(interval(func,ti,f),ti);
到
setTimeout(() => interval(func,ti,f),ti);