无法从节点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; };
Console.log里面的函数(e,defs)起作用。
但是return语句似乎没有返回值。
如何正确返回“定义”variables?
因为wn.definition
是一个asynchronous调用你应该使用承诺或asynchronous/等待或callbackfunction。
使用callback你的代码就像这样(例如,可以说你把它存储在一个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 ... });