手写setTimeout和setInterval

1,231 阅读1分钟
function mysetTimeout(fn, time){
    let now = Date.now();
    let flag = true;
    while(flag){
        if(Date.now() - now >= time){
            flag = false;
            fn();
        }
    }
}
function mysetInterval(fn, time){
    let timeId = null;
    let isClear = false;
    function interval(){
        if(isClear){
            isClear = false;
            clearTimeout(timeId);
        }else{
            fn();
            timeId = setTimeout(interval, time);
        }
    }
    timeId = setTimeout(interval, time);
    return () => {isClear = true};
}