News for hackers. Stuff that matters.
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.

    const fs = require('fs').promises
    const path = require('path')
    
    const filePath = path.join(__dirname, 'package.json')
    const fileContents = await fs.readFile(filePath, 'utf8')
    
    console.log(fileContents)
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.

Re:V8 adds support for top-level await by jeswin on Tuesday September 24, 2019 @10:56PM (#21067153)
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?
Re:V8 adds support for top-level await by ihuman on Tuesday September 24, 2019 @08:35PM (#21066352)
Is there an advantage to using "await fs.readFile" over "fs.readFileSync"?
Re:V8 adds support for top-level await by mayank on Tuesday September 24, 2019 @08:42PM (#21066390)
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.