doc: hide undocumented object artifacts in async_hooks
The examples show `process.stdout.fd` as a means to use synchronous writes in async_hooks context. However this is an undocumented field, so showcase a file write example instead. Fixes: https://github.com/nodejs/node/issues/22873 PR-URL: https://github.com/nodejs/node/pull/24741 Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Vse Mozhet Byt <vsemozhetbyt@gmail.com>
This commit is contained in:
parent
edcb950090
commit
9159fb733c
@ -150,9 +150,9 @@ Because printing to the console is an asynchronous operation, `console.log()`
|
|||||||
will cause the AsyncHooks callbacks to be called. Using `console.log()` or
|
will cause the AsyncHooks callbacks to be called. Using `console.log()` or
|
||||||
similar asynchronous operations inside an AsyncHooks callback function will thus
|
similar asynchronous operations inside an AsyncHooks callback function will thus
|
||||||
cause an infinite recursion. An easy solution to this when debugging is to use a
|
cause an infinite recursion. An easy solution to this when debugging is to use a
|
||||||
synchronous logging operation such as `fs.writeSync(process.stdout.fd, msg)`.
|
synchronous logging operation such as `fs.writeFileSync(file, msg, flag)`.
|
||||||
This will print to stdout and will not invoke AsyncHooks recursively because it
|
This will print to the file and will not invoke AsyncHooks recursively because
|
||||||
is synchronous.
|
it is synchronous.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
@ -160,7 +160,7 @@ const util = require('util');
|
|||||||
|
|
||||||
function debug(...args) {
|
function debug(...args) {
|
||||||
// use a function like this one when debugging inside an AsyncHooks callback
|
// use a function like this one when debugging inside an AsyncHooks callback
|
||||||
fs.writeSync(process.stdout.fd, `${util.format(...args)}\n`);
|
fs.writeFileSync('log.out', `${util.format(...args)}\n`, { flag: 'a' });
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -329,17 +329,20 @@ async_hooks.createHook({
|
|||||||
},
|
},
|
||||||
before(asyncId) {
|
before(asyncId) {
|
||||||
const indentStr = ' '.repeat(indent);
|
const indentStr = ' '.repeat(indent);
|
||||||
fs.writeSync(process.stdout.fd, `${indentStr}before: ${asyncId}\n`);
|
fs.writeFileSync('log.out',
|
||||||
|
`${indentStr}before: ${asyncId}\n`, { flag: 'a' });
|
||||||
indent += 2;
|
indent += 2;
|
||||||
},
|
},
|
||||||
after(asyncId) {
|
after(asyncId) {
|
||||||
indent -= 2;
|
indent -= 2;
|
||||||
const indentStr = ' '.repeat(indent);
|
const indentStr = ' '.repeat(indent);
|
||||||
fs.writeSync(process.stdout.fd, `${indentStr}after: ${asyncId}\n`);
|
fs.writeFileSync('log.out',
|
||||||
|
`${indentStr}after: ${asyncId}\n`, { flag: 'a' });
|
||||||
},
|
},
|
||||||
destroy(asyncId) {
|
destroy(asyncId) {
|
||||||
const indentStr = ' '.repeat(indent);
|
const indentStr = ' '.repeat(indent);
|
||||||
fs.writeSync(process.stdout.fd, `${indentStr}destroy: ${asyncId}\n`);
|
fs.writeFileSync('log.out',
|
||||||
|
`${indentStr}destroy: ${asyncId}\n`, { flag: 'a' });
|
||||||
},
|
},
|
||||||
}).enable();
|
}).enable();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user