为了账号安全,请及时绑定邮箱和手机立即绑定

有大佬遇到过这个问题吗:双箭头函数。怎么理解求老司机指点!

有大佬遇到过这个问题吗:双箭头函数。怎么理解求老司机指点!

森林海 2019-09-19 22:39:12
今天看到这段代码,双箭头函数,我该怎么理解这段代码?求大神指点下。我还看了这篇帖子,还是有些细节没弄明白。这个fn到底是怎么定义的?怎么就成了回调函数(我现在的理解:f'n就是回调函数)?consttasks=arr.map(c=>(fn)=>{returno.writer.publish('crawling_penalty_tasks',c,(e)=>{if(e){console.log('pubtaskserror',c)}else{console.log('pubtaskssuccess',c)}fn()})})
查看完整描述

2 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

//对你对代码进行拆分
consttask=arr.map(c=>{
return(fn)=>{
returno.writer.publish('crawling_penalty_tasks',c,(e)=>{
//if(){}else{}这里省略...
fn();//执行fn
})
}
})
//task结构[fun1,fun2,...];也就是说task中都是一个个的可执行函数
//task中函数对结构
//例如:
letfun1=(fn)=>{
returno.writer.publish('crawling_penalty_tasks',c,(e)=>{
//if(){}else{}这里省略...
fn();//执行fn
})
}
//所以上面代码的执行流程如下:
//1.获取task内部的函数
letindex=0;//这个是角标
lett=task[index];//t-->function是一个函数
//执行t
letres=t(()=>{
//这个地方,就是上面fn的执行代码
})
//res-->o.writer.publish是这个函数的返回
                            
查看完整回答
反对 回复 2019-09-19
?
开满天机

TA贡献1786条经验 获得超13个赞

consttasks=arr.map(function(c){
varr=function(fn){
returno.writer.publish('crawling_penalty_tasks',c,(e)=>{
if(e){
console.log('pubtaskserror',c)
}else{
console.log('pubtaskssuccess',c)
}
fn()
})
}
returnr;
});
其实箭头函数转成普通函数,无非就是加function,并且减掉=>。
                            
查看完整回答
反对 回复 2019-09-19
  • 2 回答
  • 0 关注
  • 662 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号