请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

第五章,5.4 -Cannot read property 'then' of undefined报错,问题没有解决,再发

第五章 5.4 生成菜单中生成微信菜单中...

报错:

Unhandled rejection TypeError: Cannot read property 'then' of undefined

574edaff0001d3f205000313.jpg574edaff0001d9e805000303.jpg

574edaff0001635805000303.jpg

574edaff0001d9e805000303.jpg

Github地址:https://github.com/zhuayu/wechat

正在回答

6回答

_潇潇暮雨 2016-06-01 22:54:18

第72行前面加个return

1 回复 有任何疑惑可以回复我~
  • 提问者 JaxChu #1
    非常感谢!get
    回复 有任何疑惑可以回复我~ 2016-06-02 21:27:06
Scott 2016-07-07 21:21:56

这里等于是有一个嵌套的 promise,所以:


Wechat.prototype.fetchAccessToken = function(data){
    var that = this
    if(this.access_token && this.expires_in){
        if(this.isValidAccessToken(this)){
            return Promise.resolve(this)
        }
    }
    this.getAccessToken().then(function(data){


的这个

this.getAccessToken().then(function(data){

this.getAccessToken 前面需要加上 return,之所以有时候会跑通,是因为 fetchAccessToken 的时候,如果 token 未过期,就不会走到下一步,自然也就不会出错。

0 回复 有任何疑惑可以回复我~
Scott 2016-06-01 22:02:28

还有这里:


this.getAccessToken()    
.then(function(data){


this.getAccessToken()     前面要加 rerurn ,报错信息提示是 找不到 then 这个方法,说明通过 fetchAccessToken 拿到的不是一个 Promise,应该是这里没有把这个 promise 一路返回。


1 回复 有任何疑惑可以回复我~
mario 2016-07-07 20:50:02

好奇怪啊!!!按理说,之前原型上的方法调了那么多次fetchAccessToken方法,都能返回一个promise对象,而这次却不行,scott老师您能讲讲这是为什么啊

0 回复 有任何疑惑可以回复我~
提问者 JaxChu 2016-06-01 22:33:20

https://img1.sycdn.imooc.com/szimg//574ef186000190cd06250634.jpg

 fetchAccessToken 我已经加过return了.

0 回复 有任何疑惑可以回复我~
Scott 2016-06-01 21:57:56

把 fetchAccesstoken 的方法代码贴一下,看下是不是这个问题的导致的,需要加一个 return:


http://coding.imooc.com/learn/questiondetail/70.html



0 回复 有任何疑惑可以回复我~
  • 提问者 JaxChu #1
    如果没有添加这个return 我是拿不到AccessToken的,我已经拿到了AccessToken。其它的API操作可以跑通测试成功,唯独在这个卡住,伤心啊。T.T
    回复 有任何疑惑可以回复我~ 2016-06-01 22:36:35
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信