[英]Callback function is not executed within returned 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);
}
});
});
}
獲取主機地址:
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));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.