牛客上使用js(Node)写编程题时,如何在本地运行进入end事件?

process.stdin.resume();
process.stdin.setEncoding('ascii');
var input = "";
var input_array = "";
process.stdin.on('data', function (data) {
    input += data;
});
process.stdin.on('end', function () {
    input_array = input.split("\n");
    console.log(input_array)
});

这是牛客的刷题代码,用于处理输入输出,如果代码放到本地运行,按下确认键就一直让我输入。没法跳进end。
请问除了判断输入是否为空,有什么办法本地vscode跳出输入,进入end呢?类似ctrl+c快捷键的那种(ctrl+d不行)

阅读 1.1k
avatarAI BotBETA

在本地运行 Node.js 代码时,如果你想要在输入完成后立即触发 'end' 事件,你可以使用 'process.stdin.pause()' 函数来暂停 Node.js 的标准输入流。这将允许你输入完数据后立即到达 'end' 事件。

在你的代码中,你可以在接收到 'data' 事件的回调函数后立即调用 'process.stdin.pause()',如下所示:

process.stdin.resume();
process.stdin.setEncoding('ascii');
var input = "";
var input_array = "";
process.stdin.on('data', function (data) {
    input += data;
    process.stdin.pause();  // 在这里暂停输入流
});
process.stdin.on('end', function () {
    input_array = input.split("\n");
    console.log(input_array)
});

在这种修改后的代码中,当接收到任何数据时,Node.js 的标准输入流都会立即被暂停。因此,在你完成输入后,Node.js 将立即进入 'end' 事件,而不需要你手动按下任何键来确认输入已经完成。请注意,如果你希望用户能够输入多个行,那么可能需要在 'end' 事件中再次调用 'process.stdin.resume()' 以允许用户输入更多的行。

2 个回答

图片.png

回车结束一行之后再 Ctrl + D,肯定可以的,要不就是键冲突了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题