TGViewer
Asynchronous Programming Asynchronous Programming @asyncify · 1.97K subscribers
Post #73 2.36K

Forwarded from HowProgrammingWorks - JavaScript and Node.js Programming

💡 Начиная Chrome 119 и Node.js 22 у нас есть Promise.withResolvers();
Для чего оно нужно? Представьте, что у нас есть какое-то callback-returning API или EventEmitter/EventTarget или другие абстракции, поведения которых нужно подождать. И вот нужно сделать адаптер, обертку с внешним Promise-returning интерфейсом.

Пример:
const sumAsync = (a, b, callback) => {
if (typeof a !== 'number') return;
if (typeof b !== 'number') return;
setImmediate(() => {
callback(a + b);
});
};


Раньше это могло выглядеть так:
let resolve, reject;
const promise = new Promise((resolved, rejected) => {
resolve = resolved;
reject = rejected;
});
setTimeout(reject, 1000, new Error('Timed out'));
sumAsync(2, 3, resolve);
const result = await promise;
console.log({ result });


Или так:
const promise = new Promise((resolve, reject) => {
sumAsync(4, 5, resolve);
setTimeout(reject, 1000, new Error('Timed out'));
});
const result = await promise;
console.log({ result });


Но теперь withResolvers позволяют это написать проще
const { promise, resolve, reject } = Promise.withResolvers();
setTimeout(reject, 1000, new Error('Timed out'));
sumAsync(6, 7, resolve);
const result = await promise;
console.log({ result });


‣ Значит ли это, что иначе писать уже плохо?
Это достаточно редкая и специфическая штука, ее нужно использовать в библиотеках и коде платформ с надеждой на то, что движки будут это как-то дополнительно оптимизировать, а в продуктовом коде нет на вас вины, если пишете по старинке.

‣ Значит ли это, что оно всем нужно?
Нет, но если знаете, это плюс.
  • 👍 14
  • 🔥 7
More from @asyncify
  1. Oct 3, 2026https://youtu.be/I5ILntVSjkQ
  2. Sep 28, 2026https://youtu.be/0GZ-Nf8yHEw
  3. Sep 26, 2026https://youtu.be/hKigdmvste0
  4. Sep 25, 2026В эту субботу будет стрим по применению AI в создании архитектуры. - архитектурный дрейф и…
  5. Sep 23, 2026https://www.youtube.com/watch?v=Bca7s7Yvhzk
  6. Sep 21, 2026https://youtu.be/el7RuL98KL8
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →