how can i use top level await
in nodejs
Using top-level await
in Node.js allows you to use the await
keyword outside of an async
function. This feature is available in Node.js starting from version 14.8.0, but it's officially stable and more widely used in version 16 and later. Here’s how you can use top-level await
in Node.js:
Ensure you're using a supported version of Node.js: Make sure your Node.js version is 14.8.0 or higher. You can check your Node.js version by running:
node -v
Use an ES module: Top-level await
is supported in ES modules. You can specify an ES module by either naming your file with a .mjs
extension or by adding "type": "module"
in your package.json
file.
Using a .mjs
file:
Create a file named example.mjs
:
// example.mjs
const fetchData = async () => {
// Simulating an async operation like fetching data
return new Promise((resolve) => setTimeout(() => resolve("Data fetched"), 1000));
};
const data = await fetchData();
console.log(data); // Output: Data fetched
Run the file using Node.js:
node example.mjs
Using package.json
with "type": "module"
:
Update your package.json
:
{
"type": "module"
}
Create a file named example.js
:
// example.js
const fetchData = async () => {
// Simulating an async operation like fetching data
return new Promise((resolve) => setTimeout(() => resolve("Data fetched"), 1000));
};
const data = await fetchData();
console.log(data); // Output: Data fetched
Run the file using Node.js:
node example.js
Dealing with CommonJS (optional): If you need to use top-level await
in a CommonJS module (files with .cjs
extension or default in Node.js when package.json
does not specify "type": "module"
), you can use an immediately-invoked async function expression (IIAFE) as a workaround:
// example.cjs
(async () => {
const fetchData = async () => {
// Simulating an async operation like fetching data
return new Promise((resolve) => setTimeout(() => resolve("Data fetched"), 1000));
};
const data = await fetchData();
console.log(data); // Output: Data fetched
})();
Run the file using Node.js:
node example.cjs
By following these steps, you can effectively use top-level await
in your Node.js applications.