Функция обратного вызова не выполняется в возвращенном обещании - PullRequest
2 голосов
/ 09 апреля 2019

У меня есть две функции, которые возвращают обещание. Первый предоставляет значение хоста, а второй использует значение хоста для получения IP-адреса. Я вижу, что первая функция работает без каких-либо проблем. Но похоже, что сторона функции обратного вызова 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 и data, все они определены. Поэтому я уверен, что функция обратного вызова внутри обещания не выполняется. Но не уверен, как это исправить.

Любые отзывы приветствуются! Спасибо!

1 Ответ

1 голос
/ 09 апреля 2019

Вы должны вернуть обещание из своего заявления тогда, чтобы завершить цепочку.

getHostedZoneId(dns)
.then(hostZoneId => {
   return getHostIps(dns, hostZoneId); // Add return
})
.then(hostIps => {
    logger.Info(hostIps);
})
.catch(err => logger.error(err));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...