簡體   English   中英

回調函數不在返回的 Promise 內執行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM