Получить возвращаемое значение модуля в вызывающем файле - PullRequest
0 голосов
/ 26 марта 2020

Мой root файл узла требует модуля с именем q1 (не включая все необходимые библиотеки как несущественные)

const analyzeSentiment = function(message) {
    sentiment.getSentiment(message).then(result => {
        return (result.vote === 'positive') ? handlePositive() : handleNegative();
    });
}

const handlePositive = function() {
    return `That's great, we have an opening next Friday at 3pm. Would that work for you?`;
}

const handleNegative = function() {
    return `That's okay. Thanks for you time. If you change your mind, give us a call at (xxx) yyy-zzzz.`;
}

exports.analyzeSentiment = analyzeSentiment;

Я называю это так: const message = require ('q1'). analySentiment ('text string');

При ведении журнала консоли я вижу, что он превращается в надлежащие методы handlePositive или handleNegative, но ничего не возвращается. Я пробовал несколько разных способов, но не могу заставить его работать. У кого-нибудь есть предложения, или я вижу что-то явно не так, что я делаю? Я впервые работаю с узлом.

1 Ответ

1 голос
/ 26 марта 2020

Ваша функция analyzeSentiment ничего не возвращает (см. Пояснение ниже).

Попробуйте:

const analyzeSentiment = function(message) {
    return sentiment.getSentiment(message).then(result => {
        return (result.vote === 'positive') ? handlePositive() : handleNegative();
    });
}

А у вашего абонента:

require('q1').sentimentAnalyzer('text string').then(message => {
    // Do your thing with the message here
});

В качестве альтернативы, если вы находитесь в асинхронном c контексте, вы можете использовать await для вызывающей стороны:

const message = await require('q1').sentimentAnalyzer('text string');

Возможно, вы задаетесь вопросом, почему return (result.vote === ... не возвращается из вашей analyzeSentiment -функции. Причина в том, что вы создаете анонимную функцию с выражением стрелки result => ... в блоке then.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...