functioncreateDeferred(){const{ promise, resolve, reject }=Promise.withResolvers();return{ promise, resolve, reject };}const deferred =createDeferred();// Resolve from elsewheresetTimeout(()=> deferred.resolve("Done!"),1000);const result =await deferred.promise;console.log(result);// "Done!"
Note ES2024. Eliminates the common pattern of extracting resolve/reject from the Promise constructor. Useful for event-based resolution and deferred patterns.
function*naturals(){let n =1;while(true)yield n++;}// Get first 5 even squaresconst result =naturals().map(n => n **2).filter(n => n %2===0).take(5).toArray();console.log(result);// [4, 16, 36, 64, 100]
Note ES2025. Chainable lazy operations on any iterator. Unlike array methods, these process elements one at a time, making them memory-efficient for large or infinite sequences.
iterator helperslazy iterationiterator mapiterator filteriterator takeiterator drop
Explicit Resource Management (using)
Syntax
using resource =acquireResource();await using resource =acquireAsyncResource();
Example
classTempFile{constructor(path){this.path= path;console.log(`Created: ${path}`);}[Symbol.dispose](){console.log(`Cleaned up: ${this.path}`);}}{
using file =newTempFile("/tmp/data.txt");// Use file here...}// Automatically calls file[Symbol.dispose]() when block exits
Note TC39 Stage 3 (expected in ES2025/2026). Similar to Python's 'with' or C#'s 'using'. Guarantees cleanup even if an error is thrown. Use Symbol.asyncDispose for async cleanup.
// Match any emoji using Unicode propertyconst emojiPattern =/\p{Emoji_Presentation}/v;console.log(emojiPattern.test("hello"));// falseconsole.log(emojiPattern.test("hi [U+D83D][U+DC4B]"));// true// Set operations in character classesconst greekLetters =/[\p{Script=Greek}&&\p{Letter}]/v;console.log(greekLetters.test("α"));// true
Note ES2024. The v flag replaces the u flag with enhanced Unicode support and set operations (&&, --) inside character classes.
regex v flagunicode setsregexp unicodecharacter class operations