老师,我这里data传递失败了,是什么原因啊。

来源:

Somnus1

2016-04-29

this.getAccessToken()
		.then(function(data){
			try {
				data = JSON.parse(data)
			}
			catch(e){
				return that.updataAccessToken()
			}
			if(that.isValidAccessToken(data)) {
				console.log('111');
				console.log(data)
				Promise.resolve(data)
			}
			else{
				return that.updataAccessToken()
			}
		})
		.then(function(data){
			console.log(data)
			that.access_token = data.access_token
			that.expires_in = data.expires_in
			that.saveAccessToken(data)
		})

Promise.resolve(data)的时候data还是有值得。可是到下一个then的时候then为空了,是什么原因啊?

下面是控制台的输出

localhost:weixin wangwenbin$ node --harmony app
Listening :2000
111
{ access_token: 'VVARpPTqrF3NerSGxqLnkOJZbJtB6nWZBJtSmdpumNbUTeZRBD4cs23AguWVxKiOfmuM7j8H5_VHOk2Mh5HrPxJpV0iYzNSEPrqvst2IbNzeQ4fcERFZSrFgwO9vRqFbHXPaAGAOEW',
  expires_in: 1461869776713 }
undefined
Unhandled rejection TypeError: Cannot read property 'access_token' of undefined
    at /Users/wangwenbin/Desktop/weixin/wechat/wechat.js:37:28
    at tryCatcher (/Users/wangwenbin/Desktop/weixin/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/Users/wangwenbin/Desktop/weixin/node_modules/bluebird/js/release/promise.js:502:31)
    at Promise._settlePromise (/Users/wangwenbin/Desktop/weixin/node_modules/bluebird/js/release/promise.js:559:18)
    at Promise._settlePromise0 (/Users/wangwenbin/Desktop/weixin/node_modules/bluebird/js/release/promise.js:604:10)
    at Promise._settlePromises (/Users/wangwenbin/Desktop/weixin/node_modules/bluebird/js/release/promise.js:683:18)
    at Async._drainQueue (/Users/wangwenbin/Desktop/weixin/node_modules/bluebird/js/release/async.js:138:16)
    at Async._drainQueues (/Users/wangwenbin/Desktop/weixin/node_modules/bluebird/js/release/async.js:148:10)
    at Immediate.Async.drainQueues [as _onImmediate] (/Users/wangwenbin/Desktop/weixin/node_modules/bluebird/js/release/async.js:17:14)
    at processImmediate [as _immediateCallback] (timers.js:383:17)


写回答

3回答

Somnus1

提问者

2016-04-29

 Promise.resolve(data) 需要return出去。。。不知道我做的对不对,不过问题是解决了。。。

0
0

apple2008

2016-04-29

哈哈,哪里出问题了,可以给我们分享一下你的经验。

0
0

Somnus1

提问者

2016-04-29

天了个撸啊,每次一发了问题就自己找到问题,为啥不发的时候折腾两个小时也找不到。不让睡觉的节奏啊。。。。

0
0

7天搞定Node.js微信公众号

Koa框架、ES2015新特性、MongoDB,开发微信公众号

1742 学习 · 787 问题

查看课程