Re:V8 adds support for top-level await
by ChristianBundy on Tuesday September 24, 2019 @07:53PM
(#21066045)
I've been using async/await especially for file access.
[ Parent
| on HN ]
Re:V8 adds support for top-level await
by drevil-v2 on Tuesday September 24, 2019 @08:32PM
(#21066327)
Well I personally would use a synchronous method rather than async for something like that where the next code path depends on the return data; if you can't get the file contents then you want to throw an error straight away.
Re:V8 adds support for top-level await
by galaxyLogic on Tuesday September 24, 2019 @09:57PM
(#21066817)
That would seem to make sense, using readFileSync() instead.
I assume it would really do much the same thing as the await example. Is there any difference?
If they do the same thing, then what's the benefit of async/await? I guess it's that you can now write your own "fs.readFileSync()" or something like that in JavaScript when needed.
fs.readFileSync() blocks the event loop preventing any other code from being run or other events/requests from being processed. Await yields control back so that other requests can be processed while the file is being read.
Re:V8 adds support for top-level await
by galaxyLogic on Wednesday September 25, 2019 @09:54AM
(#21070773)
Ah I see. Genius. So is there ever a use-case for NOT using the Async/Await -version of readFile()? Is fsReadSync() now just legacy which we don't need any more?
Is there an advantage to using "await fs.readFile" over "fs.readFileSync"?
You haven't blocked the entire event loop (i.e., other async functions that may be waiting on I/O) while the file is being read.
Re:V8 adds support for top-level await
by hombre_fatal on Tuesday September 24, 2019 @11:09PM
(#21067225)
Synchronous code blocks the event loop, so in real world code you'd only use the sync-version in some special cases, like when you're reading config files before you "server.boot()" and other scenarios where it's just a one-time cost.
Though the few sync functions in the stdlib become less and less convenient, first when promises came out, then with async/await, and now with top-level await.