Перейти к содержанию
  • Лента
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Свернуть
exlends
Категории
  1. Главная
  2. Категории
  3. Языки программирования
  4. JavaScript
  5. ECMAScript 2026 финализирован: Promise.try, Float16Array и RegExp.escape в действии

ECMAScript 2026 финализирован: Promise.try, Float16Array и RegExp.escape в действии

Запланировано Прикреплена Закрыта Перенесена JavaScript
ecmascript 2026javascriptpromise.try
1 Сообщения 1 Постеры 2 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • hannadevH В сети
    hannadevH В сети
    hannadev
    написал отредактировано
    #1

    ECMAScript 2026 официально финализирован. Это обновление добавляет Promise.try, Float16Array и RegExp.escape, которые упрощают работу с асинхронностью, графикой и регулярными выражениями.

    Эти фичи решают повседневные проблемы разработчиков. Promise.try предотвращает ошибки при обертке функций, Float16Array экономит память в WebGL, а RegExp.escape защищает от уязвимостей в паттернах. Теперь код становится чище и надежнее без лишних библиотек.

    Promise.try: безопасная обертка операций

    Promise.try - это новый статический метод Promise, который безопасно оборачивает любую функцию в промис. Он ловит синхронные ошибки и возвращает resolved промис с результатом или rejected с ошибкой. Без него вызов Promise.resolve(nonPromise) кидает TypeError, если функция не имеет метода then.

    Рассмотрим типичный сценарий: обработка пользовательского ввода или вызов API. Раньше приходилось писать try-catch внутри async функции или использовать библиотеки вроде Bluebird. Promise.try упрощает это, делая код декларативным. Например, при чтении файла или вычислении данных оно автоматически превращает синхронный код в асинхронный без крашей.

    • Автоматическая обработка ошибок: Promise.try(fn) всегда возвращает промис, даже если fn кидает ошибку синхронно.
    • Поддержка async/await: Идеально сочетается с await, упрощая цепочки промисов.
    • Совместимость: Работает с любыми функциями, включая стрелочные, без проверки типов.
    Сценарий Без Promise.try С Promise.try
    Синхронная функция try { await fn() } catch {} await Promise.try(fn)
    Ошибка в fn TypeError Rejected промис
    Успех Работает Resolved промис

    Важно: Метод не меняет поведение async функций, но спасает от неожиданных исключений в колбэках.

    Float16Array: экономия памяти для графики

    Float16Array - новый TypedArray для 16-битных чисел с плавающей записью. Он хранит значения в формате half-precision float, занимая вдвое меньше места, чем Float32Array. Это критично для приложений с большими массивами данных, как шейдеры в WebGL или машинное обучение в браузере.

    Представьте обработку изображений или 3D-моделей: стандартный Float32Array жрет память, особенно на мобильных устройствах. Float16Array снижает потребление вдвое без сильной потери точности - достаточно для большинства графических задач. В движках вроде V8 или SpiderMonkey оно уже тестируется для ускорения рендеринга.

    • Компактность: 2 байта на элемент против 4 у Float32.
    • WebGL-интеграция: Прямо используется в буферах для вершин и текстур.
    • Производительность: Быстрее на GPU, где память - bottleneck.
    Тип Размер (байт) Точность Применение
    Float16Array 2 ~3-4 знака Графика, ML
    Float32Array 4 ~7 знаков Общие вычисления
    Float64Array 8 ~15 знаков Финансы

    Нюанс: Конвертация из Float32 может привести к округлению, тестируйте на точность.

    RegExp.escape: защита от инъекций в паттернах

    RegExp.escape - статический метод, который экранирует специальные символы в строке для безопасного использования в RegExp. Без него символы вроде . или * интерпретируются как метасимволы, что приводит к ошибкам или уязвимостям при пользовательском вводе.

    Допустим, поиск по токену с точкой: /user.token/ит не только ‘user.token’, но и ‘userXtoken’. RegExp.escape(‘user.token’) вернет ‘user.token’, делая паттерн точным. Это стандартный способ защиты от ReDoS или неверных матчей в валидаторах и роутерах.

    • Автоматическая экранировка
      ( ) { } |.
    • Пользовательский ввод: Безопасно для поисковых форм и фильтров.
    • Производительность: Быстрее ручного экранирования через replace.
    Строка Без escape С RegExp.escape()
    user.* Любая последовательность user.*
    [test] Класс символов [test]
    .com Любой символ + com .com

    Подсказка: Используйте с new RegExp для динамических паттернов.

    Методы Set и итераторы: множества на стероидах

    ECMAScript 2026 расширяет Set новыми методами: union, intersection, difference, symmetricDifference. Они позволяют выполнять операции над множествами без ручных циклов или lodash. Плюс глобальный Iterator с методами вроде concat для объединения итераторов.

    Это упрощает работу с данными: фильтрацию пользователей, обработку уникальных ID или анализ логов. Раньше union требовал forEach и new Set, теперь один вызов. Iterator.concat склеивает последовательности без генераторов, как в Python.

    • union(): Объединение множеств.
    • intersection(): Пересечение.
    • difference(): Разность.
    Операция Пример Результат
    union set1.union(set2) Все элементы
    intersection set1.intersection(set2) Общие
    difference set1.difference(set2) Только в set1

    Фича: Работает с любыми iterable, включая строки и массивы.

    Что добавит ECMAScript 2026 в практику

    Эти обновления финализированы и скоро появятся в Node.js и браузерах. Promise.try и RegExp.escape решат 80% болей с асинхронностью и валидацией, Float16Array ускорит графику. За кадром остались Temporal API и Math.sumPrecise - они сделают дату и математику надежнее.

    Стоит протестировать в V8 с флагами или Babel. Дальше ждем оптимизаций для TypeScript и новых API для данных - JavaScript эволюционирует быстро.

    1 ответ Последний ответ
    0

    Категории

    • Главная
    • Новости
    • Фронтенд
    • Бекенд
    • Языки программирования

    Контакты

    • Сотрудничество
    • info@exlends.com
    • Наш чат
    • Наш ТГ канал

    © 2024 - 2026 ExLends, Inc. Все права защищены.

    Политика конфиденциальности
    • Войти

    • Нет учётной записи? Зарегистрироваться

    • Войдите или зарегистрируйтесь для поиска.
    • Первое сообщение
      Последнее сообщение
    0
    • Лента
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы