Технічний комітет ECMA 39 (TC39), орган, відповідальний за еволюцію JavaScript (ECMascript), нещодавно розширив дев'ять пропозицій через його сценічний процес, причому три нові мови стали частиною стандарту: Array.fromasync, error.iserror та явним управлінням ресурсами з using
.
Array.fromAsync
є утилітою для створення масивів з асинхронних ітерелів. Це спрощує збір даних з таких джерел, як асинхронні генератори або потоки, усуваючи потребу в посібнику for await...of
петлі.
Пояснювач функцій наводить наступний приклад у реальному світі з модуля HTTPTRANSFER:
async function toArray(items) { const result = []; for await (const item of items) {
result.push(item); } return result; } it('empty-pipeline', async () => { const pipeline = new Pipeline(); const result = await toArray(
pipeline.execute( [ 1, 2, 3, 4, 5 ]));
assert.deepStrictEqual(
result, [ 1, 2, 3, 4, 5 ], ); });
З новим синтаксисом це стає:
it('empty-pipeline', async () => { const pipeline = new Pipeline(); const result = await Array.fromAsync(
pipeline.execute( [ 1, 2, 3, 4, 5 ]));
assert.deepStrictEqual(
result, [ 1, 2, 3, 4, 5 ], ); });
З Error.isError()
Метод також просувається до етапу 4, забезпечуючи надійний спосіб перевірити, чи значення – це екземпляр помилок. Альтернатива instanceof Error
вважався ненадійним, оскільки він забезпечить помилковий негатив з перехресною реальністю (наприклад, від iframe або вузла vm
модулі) Error
екземпляр.
Ще одна пропозиція, що досягає етапу 4, – це явне управління ресурсами, введення using
Декларація для управління ресурсами, такими як файли або мережеві з'єднання, які потребують чіткого очищення. Ця пропозиція мотивована, зокрема, непослідовними моделями управління ресурсами: iterator.return()
Для ітераторів Ecmascript, reader.releaseLock()
Для читачів потоку Whatwg, handle.close()
для файлів Nodejs та багато іншого.
Також є кілька підніжжя, які пропозиція полегшує. Наприклад, під час управління декількома ресурсами:
const a = ...; const b = ...; try { ... } finally {
a.close();
b.close(); }
Атрибути імпорту (раніше твердження про імпорт) просуваються до етапу 3. Ця функція дозволяє розробникам додавати метадані для імпорту декларацій для надання інформації про очікуваний тип модуля, такі як JSON або CSS.
Інші пропозиції, що рухаються вперед на різних етапах, включають Promise.try
спрямований на спрощення помилок у обіцянці ланцюгів, RegExp.escape
для безпечного втечі рядків у регулярних виразах тощо. Розробники можуть переглянути повний список у статті в блозі в Інтернеті.
TC39 – це комітет, який розвиває JavaScript. До її членів належать, серед інших, усі основні продавці браузера. Кожна пропозиція щодо функції ECMAScript проходить через такі етапи зрілості:
- Етап 0: Соломець
- Етап 1: Пропозиція
- Етап 2: проект
- Етап 3: Кандидат
- Етап 4: закінчений
Особливість буде включена до стандарту, коли його пропозиція досягла етапу 4 і, таким чином, може використовуватися безпечно. Однак підтримка браузера може відставати від прийняття особливостей у стандарті.