readline 在提供之前处理输入

readline processes input before it is provided

我正在尝试制作一个程序,将 2 封以逗号分隔的电子邮件作为输入,并分别向它们发送一封电子邮件。我使用 readline 模块接收输入,使用 nodemailer 模块发送邮件。

代码:

const readline = require('readline')
let rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

rl.question('enter emails seperated by a comma: ', (ans) => {
    var players = ans.split(',');
    mailOptions1.to = players[0];
    mailOptions2.to = players[1];
    nextFunction();
}

这里的 nextFunction 是生成电子邮件文本并发送的函数。

当我执行此代码时,问题 'enter emails separated by a comma: ' 显示,当我输入电子邮件时,它突然尝试发送邮件并给出一个未定义收件人的错误(显然,因为我在定义收件人的过程)

任何关于为什么会发生这种情况以及如何解决它的见解将不胜感激。 :)

更新:正如 Jeff 所指出的,代码背后的逻辑很好。似乎我的应用程序的其他部分导致了错误。这个问题也许无关紧要。 :/

我对此进行了测试,它对我有用。我将以下内容放入 rl-test.js:

const readline = require('readline');
let rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

rl.question('enter emails separated by a comma: ', (ans) => {
    var players = ans.split(',');
    console.log(players[0] + '\n' + players[1]);
});

并使用 node rl-test.js 从命令行调用它,结果如下:

$ node rl-test.js
enter emails seperated by a comma: foo,bar
foo
bar

不知道该告诉你什么,但想让你知道它确实有效。你能试试这个吗?