无法从节点js模块返回值

时间:2017-10-24 12:11:05

标签: javascript node.js

exports.getDefiniton = function (text) {
    var definition = "";

    wn.definitions(text, {
        useCanonical: true
        , includeRelated: true
        , limit: 3
    }, function (e, defs) {
        definition = defs[0].word + ': 1.' + defs[0].text;
        definition += '\n2.' + defs[1].text;
        definition += '\n3.' + defs[2].text;
        console.log(definition)
    });
    return definition;
};
  

功能(e,defs)中的Console.log可以正常工作。

但是return语句似乎没有返回值。

如何正确返回'定义'变量?

1 个答案:

答案 0 :(得分:1)

由于wn.definition是异步调用,您应该使用promise或async / await或回调功能。

使用回调您的代码就像这样(例如,假设您将其存储在def.js文件中):

exports.getDefiniton = function (text, callback) {
    var definition = "";

    wn.definitions(text, {
        useCanonical: true
        , includeRelated: true
        , limit: 3
    }, function (e, defs) {
        definition = defs[0].word + ': 1.' + defs[0].text;
        definition += '\n2.' + defs[1].text;
        definition += '\n3.' + defs[2].text;
        console.log(definition);
        callback(definition);
    });
};

你可以像这样使用def.js模块:

var defModule = require("./def");

defModule.getDefiniton("Hello", function (defintion) {
    console.log(defintion);
});

<强>更新 在这种情况下@Xuva检查下面的代码:

var defModule = require("./def");

defModule.getDefiniton("Hello", function (definition) {
    displayMessage(text, definition);
    //rest of the code ...
});
相关问题