Promise.resolve(data)无法将data传出去
来源:
杨洋1989
2016-07-31
this.getAccessToken()
.then(function(data){
try{
data = JSON.parse(data); //从外部文件获取的数据都是字符串格式,所以要先转为对象
}
catch(e){
return that.updateAccessToken();
}
if (that.isValidAccessToken(data)){
console.log(data)
Promise.resolve(data);
}
else{
that.updateAccessToken();
}
})
.then(function(data){
console.log(data)
that.access_token = data.access_token;
that.expires_in = data.expires_in;
that.saveAccessToken(data);
})当第一次运行该代码,获取access_token并写入文件,运行正常。第二次运行时报错。
如上所示代码,当运行到第一个then()方法时,控制台输出的是正常的access_token对象。
当运行到第二个then()方法时,控制台输出的是undefined。
说明上一个then方法的Promise.resolve(data)语句并没有将data传出去。
我分析是由于该语句并不能返回一个Promise对象。故将其改为:
return new Promise(function(res,rej){
console.log(data);
res(data);
})更改后,第二个then方法输出了正常的access_token对象。
请问老师我的分析是否合理。
写回答
1回答
-
Promise.resolve(data) 前面加一个 return 就可以了,包括 that.updateAccessToken() 前面也加一个 return,只要 return 一个 promise,就可以链式调用 then 了
142017-05-01
相似问题