Maison >interface Web >js tutoriel >Quoi de neuf dans ES2017: fonctions asynchrones, objets améliorés et plus

Quoi de neuf dans ES2017: fonctions asynchrones, objets améliorés et plus

William Shakespeare
William Shakespeareoriginal
2025-02-15 12:33:12902parcourir

What’s new in ES2017: Async functions, improved objects and more

ES2017 (ECMAScript 2017) a introduit plusieurs mises à jour importantes de JavaScript, qui se concentrera sur et décritera brièvement son processus de mise à jour.

Points de base

  • Fonctions asynchrones: vous permet d'écrire du code asynchrone basé sur une promesse comme vous écrivez du code synchrone. Cette fonctionnalité est prise en charge dans tous les navigateurs modernes (sauf IE et Opera Mini) et Node.js 7.6.
  • Nouvelles méthodes de traitement des objets: Inclure Object.values(), Object.entries() et Object.getOwnPropertyDescriptors(). Ces méthodes sont prises en charge dans la plupart des navigateurs modernes et Node.js 7.0.
  • Méthodes de remplissage de chaîne (.PadStart () et .Padend ()): Simplifier la mise en forme des chaînes. Tous les navigateurs modernes (sauf IE) et Node.js 8.0 sont pris en charge.
  • Enregistrer les virgules de fuite: Enregistrer les virgules de fuite dans les définitions d'objets, les déclarations de tableau, les listes de paramètres de fonction, etc. Tous les navigateurs et node.js sont pris en charge. Les virgules de fuite dans les paramètres de fonction ne sont prises en charge que dans Chrome 58 et Firefox 52 au moment de la rédaction.

Mettre à jour le processus

Les normes JavaScript (ECMAScript) évoluent constamment et sont implémentées par de nombreux fabricants sur plusieurs plates-formes. ES6 (ECMAScript 2015) a mis six ans à être finalement achevé et est énorme. Pour simplifier le processus et ajouter rapidement de nouvelles fonctionnalités, un nouveau processus de publication annuel a été développé.

Le comité technique 39 (TC39) est composé de participants tels que les fabricants de navigateurs qui suivent un processus strict pour faire progresser la proposition de JavaScript:

Étape 0: Strawman - une idée préliminaire de capacités ECMAScript nouvelles ou améliorées.

Étape 1: Proposition - Un document de proposition formel préconisé par au moins un membre TC39, y compris des exemples d'API, la sémantique linguistique, les algorithmes, les obstacles potentiels, les polyfills et les démonstrations.

Étape 2: Draft - La version initiale de la spécification fonctionnelle. Deux implémentations expérimentales sont nécessaires, dont l'une peut être mise en œuvre dans un traducteur tel que Babel.

Étape 3: candidat - passez en revue les spécifications de la proposition et collectez les commentaires du fournisseur.

Étape 4: terminé - La proposition est prête à être incluse dans ECMAScript. Seules les fonctions qui atteignent ce stade sont considérées comme standard. Cependant, il peut prendre plus de temps pour se libérer en temps d'exécution comme les navigateurs et Node.js.

ES2016 est de petite échelle et est conçu pour valider les processus standardisés. Deux nouvelles fonctionnalités ont été ajoutées:

  1. La méthode .includes() du Array Renvoie True ou FALSE lorsque le tableau contient une valeur.
  2. a ** b Opérateur d'alimentation, comme Math.pow(a, b).

Nouvelles fonctionnalités de ES2017

ES2017 (ou autrefois connu sous le nom d'ES8) est considéré comme la première révision appropriée de la spécification ECMAScript. Il fournit les fonctionnalités suivantes ...

fonction asynchrone

Contrairement à la plupart des langues, JavaScript est asynchrone par défaut. Les commandes qui peuvent prendre du temps n'arrêteront pas de s'exécuter. Cela comprend des opérations telles que la demande d'URL, la lecture de fichiers ou la mise à jour de bases de données. Une fonction de rappel doit être réalisée qui est exécutée lorsque le résultat de l'opération est connu.

Cela peut conduire à un refuge lorsqu'une série de fonctions asynchrones imbriquées doit être exécutée séquentiellement. Par exemple:

<code class="language-javascript">function doSomething() {
  doSomething1((response1) => {
    doSomething2(response1, (response2) => {
      doSomething3(response2, (response3) => {
        // etc...
      };
    });
  });
}</code>

ES2015 (ES6) introduit Promise, qui fournit un moyen plus clair d'exprimer les mêmes fonctionnalités. Une fois vos fonctions prometteuses, elles peuvent être exécutées en utilisant les méthodes suivantes:

<code class="language-javascript">function doSomething() {
  doSomething1()
  .then(doSomething2)
  .then(doSomething3)
}</code>

ES2017 La fonction asynchrone étend la promesse de rendre les appels asynchrones plus clairs:

<code class="language-javascript">async function doSomething() {
  const
    response1 = await doSomething1(),
    response2 = await doSomething2(response1),
    response3 = await doSomething3(response2);
}</code>

await Rendre efficacement chaque appel synchrone sans consommer un seul thread de traitement en javascript.

Les fonctions asynchrones sont prises en charge dans tous les navigateurs modernes (sauf IE et Opera Mini) et dans Node.js 7.6. Ils changeront la façon dont vous écrivez JavaScript et pourront rédiger un article spécial sur les rappels, les promesses et les fonctions asynchrones.

Les descriptions de

Object.values(), Object.entries(), Object.getOwnPropertyDescriptors(), .padStart(), .padEnd() et

et les virgules arrière sont similaires au texte d'origine et ne seront pas répétées ici.

partagé paraSraybuffer et atomics

Les objets SharedArrayBuffer sont utilisés pour représenter des tampons de données binaires bruts de longueur fixe qui peuvent être partagés entre les travailleurs du Web. Les objets atomiques fournissent un moyen prévisible de lire et d'écrire des emplacements de mémoire définis par SharedArrayBuffer.

Bien que Chrome et Firefox implémentent les deux objets, il a été désactivé en janvier 2018 en raison d'une vulnérabilité de Spectre.

La spécification complète de la langue ECMAScript 2017 est disponible sur le site Web de l'ECMA International.

ES2017 FAQ (FAQ)

(La partie FAQ est similaire au texte d'origine et ne sera pas répétée ici. Vous pouvez conserver ou réécrire de manière sélective au besoin.)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn