按任意键在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...