Javascript 回调函数未在返回的承诺内执行
我有两个函数返回承诺。第一个提供主机值,第二个使用主机值获取IP地址。我可以看到第一个函数运行时没有任何问题。但是看起来回调函数端Javascript 回调函数未在返回的承诺内执行,javascript,node.js,promise,callback,amazon-route53,Javascript,Node.js,Promise,Callback,Amazon Route53,我有两个函数返回承诺。第一个提供主机值,第二个使用主机值获取IP地址。我可以看到第一个函数运行时没有任何问题。但是看起来回调函数端getHostIps根本没有执行。不知道为什么会发生……我的承诺函数有什么问题 我的承诺链: getHostedZoneId(dns) .then(hostZoneId => { getHostIps(dns, hostZoneId); }) .then(hostIps => { logger.Info(hostIps); //hostIps
getHostIps
根本没有执行。不知道为什么会发生……我的承诺函数有什么问题
我的承诺链:
getHostedZoneId(dns)
.then(hostZoneId => {
getHostIps(dns, hostZoneId);
})
.then(hostIps => {
logger.Info(hostIps); //hostIps is undefined
})
.catch(err => logger.error(err));
getHostedZoneId:
var getHostedZoneId = function(dns) {
var params = {
DNSName: dns,
};
return new Promise((resolve, reject) => {
findHostZoneByDNS(params, function(err, data) {
if(err) {
reject(err);
}
else {
resolve(data);
}
});
});
}
getHostIps:
var getHostIps = function(dns, hostZoneId) {
var params = {
HostedZoneId: hostZoneId,
StartRecordName: dns,
};
return new Promise((resolve, reject) => {
findHostIps(params, function(err, data) {
//logger.info("get there");
if(err) {
reject(err);
}
else {
resolve(data);
}
});
});
}
我记录了hostIps和err以及数据,所有这些都已定义。因此,我确信promise中的回调函数不会被执行。但不知道如何修复它
任何反馈都将不胜感激!谢谢 您必须从您的then声明中返回承诺才能完成链
getHostedZoneId(dns)
.then(hostZoneId => {
return getHostIps(dns, hostZoneId); // Add return
})
.then(hostIps => {
logger.Info(hostIps);
})
.catch(err => logger.error(err));
嗨,乔丹,谢谢你的帮助。我添加了return,但是回调仍然没有执行:/n您修复了缺少的return。你应该编辑它。因此,您的问题发生了变化,您收到了参数的未定义(
logger.Info(hostIps);//hostIps是未定义的
)。findHostIps(params,function(err,data){
有问题。您能提供该代码吗?您可能做错了什么™ 在findHostIps
-但是您还没有显示该函数,所以我猜™也许我的评论很模糊,findHostIps
的代码是什么?请在您的问题中分享它,它显然不是出于某种原因调用回调,getHostIps(dns,hostZoneId)
中的dns
值来自哪里?(gethostdzoneid(dns)
的dns
参数不在范围内)大家好,问题解决了。我是根据团队中以前的工程师编写的以前的糟糕代码编写代码的。在我删除了他的代码后,一切正常。我想js文件中可能存在一些种族条件问题。。。