关于 getAccessToken()

来源:

万思琪

2016-06-10

我的程序如下

function Wechat(opts){
	var that = this;
	this.appID = opts.appID;
	this.appSecret = opts.appSecret;
	this.getAccessToken = opts.getAccessToken;
	this.saveAccessToken = opts.saveAccessToken;

	this.getAccessToken()
		.then(function(data){
			try{
				data = JSON.parse(data)
			}
			catch(e){
				return that.updateAccessToken()
			}

			if(that.isValidAccessToken(data)){
				console.log('resolve data',data)
				Promise.resolve(data)
			}
			else{
				return that.updateAccessToken(data) 
			}
		})
		.then(function(data){
			console.log('then data',data)
			that.access_token = data.access_token
			that.expires_in = data.expires_in

			that.saveAccessToken(data);
		})
}

这是我第二次执行代码, wechat.txt 已经存在了 然后console.log('resolve data',data)打印的值是正确的, 在 then 方法里面接收到的 data 是 undefined(console.log('resolve data',data)) 请问这个问题怎样解决http://szimg.mukewang.com/575a54900001f39811400280.jpg

写回答

1回答

万思琪

提问者

2016-06-10

解决了 

function Wechat(opts){
	var that = this;
	this.appID = opts.appID;
	this.appSecret = opts.appSecret;
	this.getAccessToken = opts.getAccessToken;
	this.saveAccessToken = opts.saveAccessToken;

	this.getAccessToken()
		.then(function(data){
			try{
				data = JSON.parse(data)
			}
			catch(e){
				return that.updateAccessToken()
			}

			if(that.isValidAccessToken(data)){
				console.log('resolve data',data)
				return Promise.resolve(data)
			}
			else{
				return that.updateAccessToken(data) 
			}
		})
		.then(function(data){
			console.log('then data',data)
			that.access_token = data.access_token
			that.expires_in = data.expires_in

			that.saveAccessToken(data);
		})
}

在 Promise.resolve(data) 前面加个 return 就好了 虽然不明白为什么. 有人能解释下吗?

我认为是在 then 里面 不能用 resolve 方法的吗?

0
1
玉林峰
看了评论,问题解决了,谢谢
2017-03-26
共1条回复

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

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

1742 学习 · 787 问题

查看课程