success: function(res) {} 和 success: res = {}
微信小程序在获取userinfo的过程中采用this碰到一些问题
我login的success回调函数为
success: function(res) {if(res.statusCode == 200) {console.log(res.data)this.globalData.sessionId = res.data.sessionId}
此处的this会报错如下
Cannot read property 'globalData' of null;
然后我查看了app.js另外一处的success回调函数
success: res => {// 可以将 res 发送给后台解码出 unionIdthis.globalData.userInfo = res.userInfo// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回// 所以此处加入 callback 以防止这种情况if (this.userInfoReadyCallback) {this.userInfoReadyCallback(res)}
而此处的this有效,我怀疑是success: function(res) {} 和 success: res => {}的区别,于是我修改了第一处的代码为
success: res => {if(res.statusCode == 200) {console.log(res.data)this.globalData.sessionId = res.data.sessionId}
然后代码跑通了
如果不想修改回调函数,可以在app.js中增加var that = this,然后此处修改this为that即可。
目前没有没有详细了解相关html和js的知识,目前只发现这两种用法在this使用情况上的区别,另外有没有其他的区别尚不得而知,希望有了解相关知识的人评论指正。
————————————————————————分割线————————————————————————
箭头函数中this指向window(Page)
而采用如下方式时:
xxx: function() {}
执行xxx就执行了一个匿名函数,其中的this指向包含xxx这个键的对象(js中什么东西都能是对象)。
评论中有人问是不是建议用success: res => {},并不是这个意思。用哪个方式取决于项目,要考虑之前说的this指向问题:你想要this指向哪个对象?如果你想用的就在包含xxx的这个map中,就没必要用箭头函数,而且老浏览器不支持ES6语法。如果你需要的在window(page)对象下,就可以用箭头函数。
或者在外部用另外一个变量储存指向window(page)的this
或者在匿名函数中采用闭包,也可以解决这个问题,不过函数中再写个函数来实现闭包的情形很少
success: function(res) {} 和 success: res = {}相关推荐
- success: function ()和success: res=> ()有什么区别
success: function ()和success: res=> ()有什么区别 问题来源: 扫码签到的时候签到成功了,但是没有提醒图标(写了代码),仔细对比了一下up的代码,发现了一点点 ...
- jQuery ajax请求成功且返回了数据,但是不进success:function()
2019独角兽企业重金招聘Python工程师标准>>> 1.状态码返回200--表明服务器正常响应了客户端的请求: 2.通过firebug和IE的httpWatcher可以看出服务器 ...
- ajax function不执行,ajax的success: function (data)不执行怎么回事?
我有如下js函数 function poll() { console.log("id is: " + "${id}"); var id = "${id ...
- ajax判断成功状态码,Ajax返回状态码200,成功函数不触发(Ajax returns status code 200, success function not triggering)...
Ajax返回状态码200,成功函数不触发(Ajax returns status code 200, success function not triggering) 关于这一点有很多话题,但没有一个 ...
- res.data, res.data.data, res.data.data.rows的含义
res.data,res.data.data,res.data.data.rows的含义 今天看代码时,看到有这么一个方法,里面有些属性具体的值是什么,我不太理解(实习中,所以有很多不懂的~),写文字 ...
- ajax success重复,ajax中success函数中的事件会叠加吗?
无标题文档 *{margin:0;padding:0} calendar{width:210px;margin:100px auto; overflow:hidden;border:1px solid ...
- 认识 Express 的 res.send() 和 res.end()
前言 在使用 Node.js 的服务端代码中,如果使用的是 Express 框架,那么对于一个请求,常常会有两种响应方式: // 方法1 app.get("/end", (req, ...
- nodejs接口中的的res.body,res.params,res.query怎么理解?
问题: nodejs接口中的的res.body,res.params,res.query怎么理解 描述: nodejs接口中,搞不清什么时候取res.body,什么时候取res.params. 解决: ...
- res.setHeader()和res.writeHead()
res.setHeader()和res.writeHead() 事先声明: 这是我自己得出来的结论,如有不对,还望告知
最新文章
- 对光照、阴影和反光具有鲁棒性的变化检测算法及实现
- iphone 软键盘
- Github标星3.7k:微软出的数据科学入门课程(附下载)
- 前端学习(2606):vue简单叙述
- python动态与静态语言_静态语言和动态语言的区别
- polycube--基于ebpf/xdp的网络套件(网桥,路由器,nat,负载平衡器,防火墙,DDoS缓解器)
- git修改文件名大小写的方法。
- alwayson高可用组_AlwaysOn可用性组–好奇心使您的工作更轻松–第2部分
- Javascript:运行机制与原理
- 微信扫一扫服务器地址,微信扫一扫
- lumion鸟瞰图---制作心得
- 江苏高考时间2021成绩查询,小高考时间2021具体时间江苏-江苏小高考成绩查询公布时间及网站...
- C语言abs函数与fabs函数,函数abs 和fabs
- iis服务器.webp文件无法访问的解决办法
- [附源码]Python计算机毕业设计_旅游系统
- ZDM2004工具式绘图软件v1.7 for AutoCAD2004 1CD(水电版)
- python:在Windows上使用 Python
- 针对局域网IM飞秋(feiq)的开发总结
- 电销系统不仅外显手机号,还能自选归属地
- 玩转娱乐化时代|淘系互动团队几年的技术沉淀+经验都在这!