请大佬给愚弟看串代码,谢谢

最后一行

//调用的地方
`chatService.getChats(page,pageSize,function(res){
    `console.log(res)`
}`

getChats : function(page,pageSize,callback){
    callElectronMethod('chat/list',{
                    page : page,
                    count : pageSize
                },function(res){
                    var _res = {};
                    _res.Flag = res.Flag;
                    _res.chatList = chatList;
                    if(res.Flag == 0){
                        var list = res.Data;
                        for(var i=0;i<list.length;i++){
                            if(!chatMap[list[i].Id]){
                                chatList.push(list[i]);
                                chatMap[list[i].Id] = list[i];
                                list[i].isGroup = list[i].Type == 1002 ? true : false;
                                list[i].ActiveTimestamp = list[i].MsgTimestamp;
                            }
                        }
                        for(var i=0;i<chatList.length;i++){
                            chatList[i].id = chatList[i].Id;
                            if(avatarCacheMap[chatList[i].Id]){
                                chatList[i].Avatar = avatarCacheMap[chatList[i].Id];
                            }
                        }
                    }else{
                        setTimeout(function(){
                            if(retry >= 3){
                                retry = 0;
                                return;
                            }
                            retry ++;
                            chatService.getChats.apply(undefined,args);
                        },10);
                        return;
                    }
                    handlerChatList(chatList);
                    callback && callback(_res);//这边这个写法有点不明白,什么作用,可以解释一下吗
                });
}
阅读 2k
4 个回答

在合适的时候执行回调,执行之前加一步判断,省的出现callback is not a function的报错。
提供的这块代码不全吧;

`chatService.getChats(page,pageSize,function(res){
    `console.log(res)`
}

这么改就对了啊,这里的callback指的就是`

function(res){
    `console.log(res)`
}
```
之所以那么些就是怕有人这么用,不传地三个参数:
chatService.getChats(page,pageSize)

加个&& 多判断一步就不会报错了。常规用法,熟悉就好了

已阅, 没有前后文 不知道callback是哪里传进来的,但是可以猜测出这是一个回调函数,

callback && callback(_res); 当有callback时,才会执行callback(_res)

明显callback是个函数啊,你代码不完整不知道哪来的
剩下的你百度js的&&用法就好了
借网上的例子:
a && b
如果a是false,那么b不管是true还是false,都返回false,因此不用判断b了,这个时候刚好判断到a,因此返回a。
如果a是true,那么就要在判断b,和刚刚一样,不管b是true是false,都返回b。

chatService.getChats(page,pageSize,function(res){
    console.log(res)
})
在这个场景的时候话,当第三个参数存在的时候打印res

chatService.getChats(page,pageSize)
在这个场景的时候话,由于&&的阻断,将什么都不会发生
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题