node.js - 我的回调函数没有被调用
问题描述
我的回调函数没有被调用。
我做了两个模块:
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>
解决方案
您的函数 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
}
推荐阅读
- python - 熊猫:用数据框添加星期日期
- php - 删除原始类别后如何将未分类的类别分配给帖子
- python - Discord;py 消息中的频道 URL
- docker - macOS 中我的 docker 映像的主机是什么?
- data-structures - 使用合并 2 个已排序列表的概念合并 k 个已排序链表的时间复杂度是多少?
- kotlin - 为什么要从 strings.xml 中删除第一个空格
- express - 由于没有 process.env,express ts 编译时错误中的 next-iron-session
- html - 图像下方的文本超出圆形 div
- php - 在 laravel 中使用 LIKE 和数组
- android - ProGuard/DexGuard 后离子闪屏被破坏