我的回调函数没有被调用。
我制作了两个模块:
input.js
-它使用readline
从控制台上的用户那里获取一些消息。它具有getMessages()
函数,可接收用户输入并将消息存储在数组中。main.js
-在这里我调用getMessages()
并具有一个回调函数,以便在函数执行完毕后,可以打印该数组。输入模块似乎没有什么问题,因为我将数组放在getMessages()
的末尾。但是,未调用我的回调。
我通过插入console.log
并在各个阶段检查输出来验证它。一旦执行getMessages()
,程序就会停止。由于我是Node的新手,我可能会错过一些东西。感谢任何帮助。
// input.js
var messages = [];
function getMessages() {
const readline = require("readline");
rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.setPrompt("enter a message, press 0 when done : ");
rl.prompt();
rl.on("line", function(msg) {
if (msg == 0) {
rl.close();
} else {
messages.push(msg);
rl.prompt();
}
});
rl.on("close", function() {
console.log("returning array : ", messages);
return messages;
});
}
module.exports.getMessages = getMessages;
// main.js
const input = require("./input");
input.getMessages(function(err, messages) {
console.log("Your messages are : ", messages, messages.length);
});
PS D:\files\workspaces\tameOfThrones\node> node .\main.js
enter a message, press 0 when done : abc
enter a message, press 0 when done : def
enter a message, press 0 when done : ghi
enter a message, press 0 when done : jkl
enter a message, press 0 when done : mno
enter a message, press 0 when done : 0
returning array : [ 'abc', 'def', 'ghi', 'jkl', 'mno' ]
PS D:\files\workspaces\tameOfThrones\node>
答案 0 :(得分:1)
您的函数getMessages,没有参数作为回调。
含义
function getMessages(){}
而:
input.getMessages(function(err, messages){
console.log("Your messages are : ", messages, messages.length);
});
您需要:
function getMessages(callback){
//call callback according to your logic
}