实现一个异步函数
// const delayLog=(msg)=>
// setTimeout(()=>{console.log(msg)},1000)
修改为嵌套异步,希望在每秒以后执行函数(参数不同)
const delayLog=(msg,cb)=>
setTimeout(()=>{
console.log(msg);
cb&&cb();
},1000);
最后我们希望我们输入的参数是类似这种格式
// ['msg1','msg2','msg3','msg4','msg5']
//每隔一秒来接连打印上面的参数(也就是执行异步函数,至于函数内部什么逻辑要看我们的业务)
采用科里化:保留前面的参数,后面的参数作为回调传入
const saveFirst=(msg)=>(cb)=>delayLog(msg,cb);
const text1=saveFirst('msg1')
const text2=saveFirst('msg2')
const text3=saveFirst('msg3')
// 后面的函数作为回调函数参数传给前面的函数 回调地狱写法
// text1(()=>text2(()=>text3()))
传入参数数组,实现回调嵌套(Thunk写法)
const thunkMonk=(arr)=>
arr.reduceRight((a,b)=>()=>{
b(()=>a())
})
thunkMonk([text1,text2,text3])();