Javascript - 使用console.log()/ return导致的有趣行为

时间:2018-02-12 12:42:00

标签: javascript asynchronous callback

function extractKeywords(data, fn){

    var NaturalLanguageUnderstandingV1 = require('watson-developer-cloud/natural-language-understanding/v1.js');
    var natural_language_understanding = new NaturalLanguageUnderstandingV1({
        'username': 'hidden',
        'password': 'hidden',
        'version_date': '2017-02-27'
    });

    var parameters = {
        'text': data,
        'features': {
            'entities': {
                'emotion': false,
                'sentiment': false,
                'limit': 10
        }
    };

    keys = null;

    natural_language_understanding.analyze(parameters, function(err, response) {
        if (err) {
            console.log('error:', err);
        }
        else {
            keys = getAll(response); // "getAll" is a function that returns the keywords as a string
            fn(keys);
        }
    });

}

现在,接下来的两个调用会输出让我困惑的东西:

extractKeywords("Abaktal Prospectus, tablets \\n What is Abaktal and what it is used for? nIndications \\n  Infection caused ",
    function(keyss){
        return keyss;
    }
);

输出:

  

空控制台

,而

extractKeywords("Abaktal Prospectus, tablets \\n What is Abaktal and what it is used for? nIndications \\n  Infection caused ",
    function(keyss){
        console.log(keyss);
    }
);

输出:

  

Abaktal Prospectus,片剂,感染,nIndications /健康和   健身/疾病/艾滋病和艾滋病,/技术和   计算机/硬件/计算机/便携式计算机/平板电脑,/技术和   计算/消费电子产品/便携式娱乐   市,, Abaktal,位置

哪个是正确的输出。

这是我的第一个javascript项目,所以我理解

natural_language_understanding.analyze(parameters, function(err, response) {
            if (err) {
                console.log('error:', err);
            }
            else {
                keys = getAll(response); // "getAll" is a function that returns the keywords as a string
                fn(keys);
            }
        });

涉及异步执行,我尝试使用

进行处理
fn(keys);

显然,我的代码中存在引发此行为的问题,因为我想要的输出是:

  

Abaktal Prospectus,片剂,感染,nIndications /健康和   健身/疾病/艾滋病和艾滋病,/技术和   计算机/硬件/计算机/便携式计算机/平板电脑,/技术和   计算/消费电子产品/便携式娱乐   市,, Abaktal,位置

使用这个:

extractKeywords("Abaktal Prospectus, tablets \\n What is Abaktal and what it is used for? nIndications \\n  Infection caused ",
    function(keyss){
        return keyss;
    }
);

关于我应该更改/重新格式化以实现此目的的任何解决方案?

0 个答案:

没有答案