From 997c0e05a49d00520eef8c41781b35cc240ca256 Mon Sep 17 00:00:00 2001 From: Gireesh Punathil Date: Fri, 30 Nov 2018 14:36:14 +0530 Subject: [PATCH] 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 Reviewed-By: Vse Mozhet Byt --- doc/api/async_hooks.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/doc/api/async_hooks.md b/doc/api/async_hooks.md index 6261190bcc061a..ad7a94736ff540 100644 --- a/doc/api/async_hooks.md +++ b/doc/api/async_hooks.md @@ -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 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 -synchronous logging operation such as `fs.writeSync(process.stdout.fd, msg)`. -This will print to stdout and will not invoke AsyncHooks recursively because it -is synchronous. +synchronous logging operation such as `fs.writeFileSync(file, msg, flag)`. +This will print to the file and will not invoke AsyncHooks recursively because +it is synchronous. ```js const fs = require('fs'); @@ -160,7 +160,7 @@ const util = require('util'); function debug(...args) { // 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' }); } ``` @@ -330,17 +330,20 @@ async_hooks.createHook({ }, before(asyncId) { 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; }, after(asyncId) { indent -= 2; 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) { const indentStr = ' '.repeat(indent); - fs.writeSync(process.stdout.fd, `${indentStr}destroy: ${asyncId}\n`); + fs.writeFileSync('log.out', + `${indentStr}destroy: ${asyncId}\n`, { flag: 'a' }); }, }).enable();