我有两个函数可以返回promise。第一个提供主机值,第二个使用主机值获取IP地址。我可以看到第一个函数运行没有任何问题。但看起来回调函数方面getHostIps
根本没有执行。不确定为什么会发生......我的诺言功能有什么问题?
我的承诺链:
getHostedZoneId(dns)
.then(hostZoneId => {
getHostIps(dns, hostZoneId);
})
.then(hostIps => {
logger.Info(hostIps); //hostIps is undefined
})
.catch(err => logger.error(err));
获取HostedZoneId:
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语句返回promise以完成链。
getHostedZoneId(dns)
.then(hostZoneId => {
return getHostIps(dns, hostZoneId); // Add return
})
.then(hostIps => {
logger.Info(hostIps);
})
.catch(err => logger.error(err));