Node.js中request-promise链式调用Promise返回undefined问题排查
问题分析与解决方案
你的问题出在**main函数没有返回Promise链**,导致外部调用main()时拿到的是undefined,而非预期的Promise。
具体原因
看你的main函数代码:
function main(){ login() .then( function(result) { return getMyInfo(); } ); }
你调用了login().then(...)构建了Promise链,但没有把这个链式调用的Promise返回出去。JavaScript函数如果没有显式的return语句,默认会返回undefined。所以当你在外部调用main().then(...)时,本质是在undefined上调用.then()方法——这要么直接抛出错误,要么(部分兼容环境下)你的回调里的thisIsWhatINeed就会是undefined。
修复方法
只需要在main函数里添加return,把Promise链返回即可:
function main(){ return login() .then( function(result) { return getMyInfo(); } ); }
这样main()就会返回一个完整的Promise:它会等待login()完成后自动执行getMyInfo(),最终将getMyInfo()的结果传递给外部的.then()回调。
额外提示
如果getMyInfo()需要用到login()返回的结果(比如登录后的token),记得把result作为参数传进去:
function main(){ return login() .then( function(result) { // 假设getMyInfo需要接收登录结果作为参数 return getMyInfo(result); } ); }
内容的提问来源于stack exchange,提问作者solaire
相关产品推荐
相关产品推荐

