Проблема в моей пользовательской функции setInterval () в JavaScript - PullRequest
0 голосов
/ 26 октября 2018

Здесь я сделал пользовательскую функцию 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 , оно равно undefined , поэтому оно удовлетворяет и входит в оператор if.Теперь, когда try{} вызывает функцию, она выполняется.Проблема в том, что я вызываю функцию SetInterval, передавая аргументы в виде функций interval() и ti, которые представляют собой время в миллисекундах.

Так что она должна вызывать функцию interval() через время ti, но это не так.

1 Ответ

0 голосов
/ 26 октября 2018

setTimeout требуется функция, вы передаете значение вызова функции.


Измените

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

на

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