proposal-top-level-await
proposal-nullish-coalescing
proposal-top-level-await | proposal-nullish-coalescing | |
---|---|---|
13 | 5 | |
1,005 | 1,232 | |
- | - | |
7.0 | 0.0 | |
almost 3 years ago | over 1 year ago | |
HTML | HTML | |
Apache License 2.0 | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
proposal-top-level-await
-
Unveiling Breakthroughs Found In The State Of JS 2022 Survey
For more info about this feature, you can refer to the official proposal repo.
-
Write program in assembly, decompile to TypeScript, convert to JavaScript, run in Node
This one is Stage 4 (complete)
-
Open Source Adventures: Episode 29: Using D3 with old school tooling to visualize Russian Tank Losses
But browsers don't support top-level await yet. So we need to put it all inside as async function.
-
Configuring CommonJS & ES Modules for Node.js
Note that ESM is not “backwards” compatible with CJS: a CJS module cannot require() an ES Module; it is possible to use a dynamic import (await import()), but this is likely not what consumers expect (and, unlike ESM, CJS does not support Top-Level Await).
-
ES2022 Preview: 10 Exciting JavaScript Language Features From 2021
top-level await feature for ES modules
-
How to save fetch JSON result to global variable?
That said, ES2022 does introduce a top-level await that works in the top level scope, but only in modules, not global scope. So if in a module this could work:
-
Node v14.8+: Top Level Async Await
With the latest node version(s) (v14.8+), we should be able to rewrite the above code to something like this. proposal-top-level-await
-
What is a practical example of using a Promise? These Youtube tutorials are bogus
Now a days, you'll likely mostly use async/await. The few cases where you'll need the Promise API (then()'s etc.) is when you're outside of an async function. With the new top-level await feature coming to modules, you wouldn't even need it outside of async functions in module code which will make its usage even less common.
-
Basic import question
The await is in top level. The top level await proposal is in stage 3. Currently, the browser support is also not good enough but should work in latest version of the google chrome browser.
-
Rust's async isn't f#@king colored!
There is a proposal for top-level await in JS. I'm guessing this would effectively kinda do the same thing? Or am I wrong there?
proposal-nullish-coalescing
-
Unveiling Breakthroughs Found In The State Of JS 2022 Survey
For more info about this feature, you can refer to the original proposal.
-
Javascript: El operador nullish-coalescing
Propuesta
-
PEP 505 – None-aware operators (2015)
For comparison, here are the Javascript RFCs for the equivalent operators:
https://github.com/TC39/proposal-optional-chaining
https://github.com/tc39/proposal-nullish-coalescing
IMO optional chaining is a lifesaver when dealing with deeply nested JSON, and it's become indispensable in our Typescript code. But we also deal with JSON from various third-party endpoints in Python, and far too often we resort to an inefficient deep_get utility to make our code sensical.
> if json?.get("foo")?.get("bar")?[0]?.get("baz")
may seem messy but would be infinitely better than the fragile (note the nested list-of-a-single-dict, and how bugs can appear if it's not there):
> if json.get("foo", {}).get("bar", [{}])[0].get("baz")
or the inefficient
> if deep_get(json, "foo.bar.0.baz")
It's not nearly as good as the Typescript json.foo?.bar?.[0]?.baz - but it's good enough!
- Stage 4: Nullish Coalescing for JavaScript
-
Using the optional chaining operator in JavaScript
The nullish coalescing proposal provides a way to handle undefined or null values and provide default values for the expression. You can use the “??” operator to provide a default value for an expression.
What are some alternatives?
esbuild - An extremely fast bundler for the web
proposal-regexp-match-indices - ECMAScript RegExp Match Indices
Rollup - Next-generation ES module bundler
proposals - Tracking ECMAScript Proposals
rust-async-bench - The cost of Rust async/await
proposal-optional-chaining
regexp-match-indices - Polyfill for the RegExp Match Indices proposal
babel-sublime - Syntax definitions for ES6 JavaScript with React JSX extensions.
webpack - A bundler for javascript and friends. Packs many modules into a few bundled assets. Code Splitting allows for loading parts of the application on demand. Through "loaders", modules can be CommonJs, AMD, ES6 modules, CSS, Images, JSON, Coffeescript, LESS, ... and your custom stuff.
zx - A tool for writing better scripts
nodejs-module-config-examples - A collection of Node.js module configurations for interoperability between CJS and ESM