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
相似问题