doc: recommend events.once to manage 'close' event · nodejs/node@a25d76c
@@ -29,6 +29,7 @@ ls.on('close', (code) => {
29293030```mjs
3131import { spawn } from 'node:child_process';
32+import { once } from 'node:events';
3233const ls = spawn('ls', ['-lh', '/usr']);
33343435ls.stdout.on('data', (data) => {
@@ -39,9 +40,8 @@ ls.stderr.on('data', (data) => {
3940console.error(`stderr: ${data}`);
4041});
414242-ls.on('close', (code) => {
43-console.log(`child process exited with code ${code}`);
44-});
43+const [code] = await once(ls, 'close');
44+console.log(`child process exited with code ${code}`);
4545```
46464747By default, pipes for `stdin`, `stdout`, and `stderr` are established between
@@ -772,6 +772,7 @@ ls.on('close', (code) => {
772772773773```mjs
774774import { spawn } from 'node:child_process';
775+import { once } from 'node:events';
775776const ls = spawn('ls', ['-lh', '/usr']);
776777777778ls.stdout.on('data', (data) => {
@@ -782,9 +783,8 @@ ls.stderr.on('data', (data) => {
782783console.error(`stderr: ${data}`);
783784});
784785785-ls.on('close', (code) => {
786-console.log(`child process exited with code ${code}`);
787-});
786+const [code] = await once(ls, 'close');
787+console.log(`child process exited with code ${code}`);
788788```
789789790790Example: A very elaborate way to run `ps ax | grep ssh`
@@ -1483,6 +1483,7 @@ ls.on('exit', (code) => {
1483148314841484```mjs
14851485import { spawn } from 'node:child_process';
1486+import { once } from 'node:events';
14861487const ls = spawn('ls', ['-lh', '/usr']);
1487148814881489ls.stdout.on('data', (data) => {
@@ -1496,6 +1497,9 @@ ls.on('close', (code) => {
14961497ls.on('exit', (code) => {
14971498console.log(`child process exited with code ${code}`);
14981499});
1500+1501+const [code] = await once(ls, 'close');
1502+console.log(`child process close all stdio with code ${code}`);
14991503```
1500150415011505### Event: `'disconnect'`