IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

ECMAScript 2017 : Ecma International annonce les nouvelles mises à jour de ses spécifications


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Mai 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2017
    Messages : 35
    Par défaut ECMAScript 2017 : Ecma International annonce les nouvelles mises à jour de ses spécifications
    ECMAScript 2017 : Ecma International annonce les nouvelles mises à jour de ses spécifications,
    pour les langages de script

    Ecma international, le comité international responsable de l'ensemble des normes des langages de script, a annoncé ses nouvelles mises à jour ECMAScript 2017 (ES8). Cette publication s’inscrit dans le cadre de la décision de l’Ecma de sortir des mises à jour plus petites, mais plus fréquentes pour faciliter leur intégration dans les différents navigateurs. Ainsi l’Ecma a publié ECMAScript 2015 en 2015 puis ECMAScript 2016 en 2016.

    L’ECMAScript 2017 a apporté de nouvelles caractéristiques portant sur différents concepts des scripts et de JavaScript en particulier. Il convient de noter que nous avons six nouvelles caractéristiques majeures que nous allons passer en revue.

    Les fonctions asynchrones

    La combinaison des promises (promesses en français) et les générateurs permet de travailler avec un code asynchrone dans ECMAScript et ainsi abandonner les callbacks enchaînés
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    async function myFunction(id) {
      try {
        const val1 = await myAsyncFunc1(id);
        const val2 = await myAsyncFunc2(val1);
        console.log(`Woho! The output of async call is: ${val2}`);
      }
      catch (err) {
        console.log('Uuuups!', err);
      }
    }

    Shared memory and atomics

    Pour allouer ou partager de la mémoire entre plusieurs agents :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    sab = new SharedArrayBuffer(1024);  // 1KiB shared memory
    L’objet global Atomics propose un certain nombre d’opérations sous forme de méthodes statiques pour servir à plusieurs fins en relation.

    Object.values and Object.entries

    Les méthodes entries() et values() permettent de retourner un objet de paires attribut/valeur. Ce qui permettrait de se passer d’autres bibliothèques JavaScript comme JQuery par exemple.
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    const myObject = {
      name: 'Paweł',
      age: 29
    };
     
    Object.entries(myObject);

    String padding

    Une sorte de formatage de chaînes de caractères au sein du script. En utilisant les méthodes padStart() ou padEnd(), on peut ajouter des espaces ou caractères spécifiques, selon les paramètres, au début ou à la fin d’une chaîne de caractères.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'machaine'.padStart(20);
    // "        machaine"
     
    'machaine'.padEnd(20, '*');
    // "machaine********"
    Object.getOwnPropertyDescriptors()

    En lui passant un objet en paramètre, elle retourne un nouvel objet dont les propriétés ont les mêmes clés que les propriétés de l’objet cloné, mais ont pour valeurs les descripteurs de ces propriétés :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    const obj = {
        [Symbol('foo')]: 123,
        get bar() { return 'abc' },
    };
    console.log(Object.getOwnPropertyDescriptors(obj));
     
    // Output:
    // { [Symbol('foo')]:
    //    { value: 123,
    //      writable: true,
    //      enumerable: true,
    //      configurable: true },
    //   bar:
    //    { get: [Function: bar],
    //      set: undefined,
    //      enumerable: true,
    //      configurable: true } }

    Trailing commas

    Pour autoriser les virgules avec retour à la ligne dans la liste des paramètres des fonctions et dans les objets littéraux.
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    let obj = {
        prop1: 'val1',
        prop2: 'val2',
    };
     
    function myFunction(
        param1,
        param2,
    ) {}

    Source : ECMAScript

    Et vous ?

    Que pensez-vous de ses nouvelles mises à jour ?

    Voir aussi
    ECMAScript 2016 : des mises à jour plus petites et plus fréquentes pour l'ensemble de normes des langages de script

  2. #2
    Membre actif Avatar de sitexw
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 44
    Par défaut

  3. #3
    Membre éprouvé
    Avatar de TiranusKBX
    Homme Profil pro
    Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Inscrit en
    Avril 2013
    Messages
    1 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 476
    Billets dans le blog
    6
    Par défaut
    je ne sait pas pour vous mais ça sent le C#

  4. #4
    Membre éprouvé Avatar de Zefling
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 224
    Par défaut
    Citation Envoyé par TiranusKBX Voir le message
    je ne sait pas pour vous mais ça sent le C#
    Je connais pas vraiment C#, mais j'aurais plus dit TypeScript

  5. #5
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    ?? Que je sache, je ne crois pas que C# fonctionne nativement en asynchrone ??

    en tout cas pas comme en JavaScript.
    exemple ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var a = fonction_tres_lente();
    var b = a+5;  /* plante, car cette ligne s'exécute avant que  fonction_tres_lente() ait renvoyé une valeur */
    c'est une erreur fréquente que rencontrent les "débutants" en JavaScript (même s'ils l'écrivent en TypeScript).
    et même si on utilise PureScript le JavaScript généré produira toujours cette même erreur.

    Le truc des promesses en JavaScript, c'est fait justement pour maîtriser les enchaînements de code, ç’a n'a rien à voir avec une gestion du muti-tache telle qu'elle est faite dans la plupart des Langages.
    Le seul autre langage à ma connaissance pouvant partager cette conception asynchrone c'est Clojure.

    Ceci étant, c'est un peu normal que ECMA continue à faire son job sur la normalisation de ce langage.
    Perso je trouve que l'utilisation de TypeScript simplifie pas mal les choses pour produire du JavaScript propre.

    car il faut bien le reconnaître, au départ JavaScript était du bricolage, Brendan Eich lui même à demandé pardon, et "heureusement" l'arrivée de jQuery à certainement du éviter pas mal de suicides chez les codeurs.
    D'ailleurs, cette gestion des promesses à un petit goût de jQuery (deferred.promise() )...

  6. #6
    Membre éprouvé
    Avatar de TiranusKBX
    Homme Profil pro
    Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Inscrit en
    Avril 2013
    Messages
    1 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 476
    Billets dans le blog
    6
    Par défaut
    tu doit mettre le mot await pour les appels asynchrones(déclarées avec le mot async) comme dans la spécification EcmaScript 2017

  7. #7
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    mettre un simple await devant l'appel ne suffit pas, il faut aussi rajouter une promesse dans la fonction appelée, sinon le await ne sert à rien (et il prend "indéfini" comme réponse).

    Et maintenant la 262 est devenue une EcmaScript 2018

    Draft ECMA-262 / July 13, 2017
    ECMAScript® 2018 Language Specification
    => https://tc39.github.io/ecma262
    => https://tc39.github.io/ecma262/#sec-...on-definitions

    car la ECMA-262 est toujours au niveau d'un"draft" depuis au moins 2015, et aujourd'hui les spécifications seront pour 2018...

    Les explications fournies dans la new sont vraiment tarabiscotées en faisant l'impasse sur l'importance d'avoir à placer une promesse dans la fonction appelée.
    je préfère de loin celle de MDN
    => https://developer.mozilla.org/fr/doc...9rateurs/await

    De toutes façon les promesses ne sont pas encore implémentées partout, et en attendant j'utilise jQuery quand l'asynchronicité du JavaScript pose problème dans le code (objets deferred )

    ET ma question ne portait pas sur de la syntaxe, mais sur le fait qu'on puisse comparer un langage asynchrone comme JavaScript avec le C# qui ne l'est pas.

Discussions similaires

  1. Microsoft annonce une nouvelle mise à jour de Team Server Foundation
    Par Victor Vincent dans le forum EDI/Outils
    Réponses: 2
    Dernier message: 03/05/2016, 09h35
  2. Réponses: 0
    Dernier message: 20/06/2012, 14h27
  3. Réponses: 2
    Dernier message: 25/02/2012, 21h06
  4. Réponses: 1
    Dernier message: 12/09/2007, 16h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo