按任意键在nodejs中继续
我需要一个函数来暂停脚本的执行,直到按下一个键。 我试过了:
var stdin = process.openStdin(); require('tty').setRawMode(true); stdin.on('keypress', function (chunk, key) { process.stdout.write('Get Chunk: ' + chunk + '\n'); if (key && key.ctrl && key.name == 'c') process.exit(); });
但它只是听按键,没有任何反应。 该程序不会继续执行。
我怎样才能暂停执行?
适用于我:
console.log('Press any key to exit'); process.stdin.setRawMode(true); process.stdin.resume(); process.stdin.on('data', process.exit.bind(process, 0));
接受的解决schemeasynchronous等待一个关键事件,然后退出,这不是一个真正的解决scheme,“按任意键继续”。
我在编写一些nodejs shell脚本时需要暂停。 我最终使用了shell命令“read”的child_process的spawnSync。
这将基本上暂停脚本,当你按Enter键将继续。 很像在Windows中的暂停命令。
require('child_process').spawnSync("read _ ", {shell: true, stdio: [0, 1, 2]});
希望这可以帮助。
如果你不想退出这个过程,这段代码会完成这个工作:
console.log('Press any key to continue.'); process.stdin.once('data', function () { continueDoingStuff(); });
它是asynchronous的,所以不会在循环内部工作 – 如果你使用的是节点7,你可以把它包装在承诺中,并使用async/await
。
我实际上做了一个叫做paktc
的npm包,它可以帮助你。 如果您安装该软件包:
> npm install paktc
那么你会这样使用它:
// your console application code here... require('paktc') // Press any key to continue...