gpt4 book ai didi

javascript - 回调函数不在返回的 Promise 中执行

转载 作者:行者123 更新时间:2023-11-29 23:01:08 24 4
gpt4 key购买 nike

我有两个返回 promise 的函数。第一个提供主机值,第二个使用主机值获取 IP 地址。我可以看到第一个函数正在运行,没有任何问题。但是看起来回调函数端 getHostIps 根本没有执行。不确定为什么会发生......我的 promise 函数有什么问题?

我的 promise 链:

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 语句中的 promise 以完成链。

getHostedZoneId(dns)
.then(hostZoneId => {
return getHostIps(dns, hostZoneId); // Add return
})
.then(hostIps => {
logger.Info(hostIps);
})
.catch(err => logger.error(err));

关于javascript - 回调函数不在返回的 Promise 中执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55583303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com