loadUserInfo加载用户信息等函数不理解

来源:4-8 通用导航开发(逻辑层)

暮色如虹

2017-11-27

我对这张的loadUserInfo等函数都不是很理解,不清楚各个函数之间的执行顺序.

以loadUserInfo为例,它涉及到了_user.checkLogin和_mm.request

_mm.request中又有ajax,老师能不能以加载用户信息成功为例,告诉我整个函数的调用流程呢?

其中的细节,也不懂,如_mm.request中,Ajax请求成功,会执行到success的方法.

if (0 === res.status) {
typeof param.success === 'function' && param.success(res.data, res.msg);
}

加入,后端返回了用户信息status=0,先拿到param.success的类型,判断其实一个function 然后param.success(res.data, res.msg)语句是给调用者返回数据吗,给_user.checkLogin中resolve=res.data reject=res.msg?

接下来回到loadUserInfo,res赋值为resolve errMsg=reject?

这种调用方式是叫回调函数吗?

前端知识懂得不多.老师辛苦了!

写回答

1回答

Rosen

2017-11-27

可能是对这个接口有点不理解,这个接口的作用主要是检查登录信息,但还可以在登录情况下获取到用户信息,在service里把这个接口就叫了checkLogin。

在页面里,loadUserInfo方法就是为了加载用户信息显示在导航条上,但调用的是checkLogin方法,也就是_user.checkLogin()来获取用户信息。_user在最上面看其实就是user-service,这里service的作用是做一个中间层,不在业务里直接和数据去交互,也是分层的结构。service里面的checkLogin方法才是调用ajax请求来请求后端数据,这个请求方法被我们封装在了_mm.request里(_mm就是通用工具),所以在user-service里会调用_mm.request()方法。

ajax成功了,调用了param.success,这个方法是从param对象传进来的,这就是回调,然后传给回调两个参数(res.data, res.msg),这两个参数都是resolve的,如果是失败就是给param.error传回去一个res.msg参数。

最后,我猜你的疑问主要在这了,调用的res.success到底是谁,我们在user-service的checkLogin方法里可以看到调用request时候传进去的success其实是传进service的resolve,这时候再追回到page部分的loadUserInfo,我们调用checkLogin方法时是传进去两个匿名函数,也就是两个function,那第一个function就是最后的success,所以回调的最终地方就是第一个function。这个function只用了一个res函数,是因为这个接口里我们不需要msg,就只拿res就够了。假如是需要msg的地方,就应该是下面这样的结构:

_user.checkLogin(function(res, msg){
    console.log(msg);
}, function(errMsg){
    // do nothing
});


就这些吧,希望我的表达还算清除。

1
3
Rosen
回复
暮色如虹
前后通吃,棒棒的!
2017-11-27
共3条回复

真实数据对接 从0开发前后端分离的企业级上线项目

【毕设项目精品】前端实战,对接真实服务端数据,开发完整项目

4262 学习 · 4113 问题

查看课程