1.用setTimeout实现SetInterval
function mysettimeout(delay,fn,...args){
let time=null;
function tick(){
time = setTimeout(()=>{
fn(...args);
tick();
},delay)
}
fn(...args);
tick();
return ()=>clearTimeout(time);
}
当你需要停止这个循环定时器时
const stop = mysettimeout(1000, console.log, 'Hello World');
// 当你想停止循环时,调用返回的函数
stop();
2.手写一个compose函数,返回一个函数,能够对传入的不定量个函数进行链式调用
详见
function compose(...args){
if(args.length){
if(args.length===1){
return ()=>args[0];
}else return args.reduce((a,b)=>(...arg)=>a(b(...arg)))
}else return (arg)=>arg;
}