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 :

[Article] Découvrez le yielded style programming ou développement JavaScript asynchrone linéaire


Sujet :

JavaScript

  1. #21
    Membre éclairé

    Femme Profil pro
    Experte JS / Conseillère en best practices / Chercheuse en programmation
    Inscrit en
    Octobre 2007
    Messages
    740
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Experte JS / Conseillère en best practices / Chercheuse en programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 740
    Points : 805
    Points
    805
    Par défaut
    Nouvelle version!

    Suite à une confusion entre les générateurs JS 1.7 présentés par MDN et ceux proposés pour l'ES6, j'ai fait une nouvelle version basée sur la future norme, puisque les autres ne sont/seront pas standards.

    Attention, pour le moment, elle n'est compatible qu'avec Node.js en version >= 0.11.x, avec l'option --harmony


    Vous noterez l'astérisque après le mot function, pour les fonctions retournant un générateur, ainsi que le changement de nom de méthode (next, au lieu de send), afin de se conformer à l'évolution des générateurs.
    Afin d'obtenir plus facilement de l'aide, n'hésitez pas à poster votre code de carte bancaire

    Mon GitHub

    Une alternative à jQuery, Angular, Vue.js, React, ... ? Testez anticore, en quelques secondes à peine !
    (Contributions bienvenues)

  2. #22
    Membre éclairé

    Femme Profil pro
    Experte JS / Conseillère en best practices / Chercheuse en programmation
    Inscrit en
    Octobre 2007
    Messages
    740
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Experte JS / Conseillère en best practices / Chercheuse en programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 740
    Points : 805
    Points
    805
    Par défaut
    Nouvelle version (majeure) : 1.1.0

    La communication parent <-> enfant a été simplifiée.

    Fonctionnement actuel :

    Code : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    var fct, fctBis, yielded;
     
    fct = function* fct(value) {
        var response, yieldedChild, child;
     
        response = value;
     
        yieldedChild = this.yld(fctBis); // ylds fctBis with this context as parent
     
        yield child = yieldedChild(); // stores the child scope
     
     
        while (response !== 5) {
            response = yield setTimeout(function () {
                console.log(response);
                child.next(response); // sends the new value to the next child context yield
            }, 2000);
        }
    };
     
    fctBis = function* fctBis() {
        var parent, response;
     
        parent = this.parent;
     
        while (true) {
            response = yield parent.next(response + 1); // sends the response to the parent context
        }
    };
     
    yielded = yld(fct);
     
    yielded(1);
    Le diff


    EDIT :

    Nouvelle version : 1.1.1

    Le setter this.error devient this.throw(), conformément aux générateurs ES6
    Afin d'obtenir plus facilement de l'aide, n'hésitez pas à poster votre code de carte bancaire

    Mon GitHub

    Une alternative à jQuery, Angular, Vue.js, React, ... ? Testez anticore, en quelques secondes à peine !
    (Contributions bienvenues)

  3. #23
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    Je m'étais penché sur la question il y a quelques temps suite à la découverte de TaskJS. Connais - tu ? (c'est périmé, c'est sorti y'a deux ans quand Firefox a fourni les générateurs). Je suis plutôt "enjoué" de ce nouveau style qui va prendre le dessus, je pense, quand le prochain ES sera bien déployé dans le paysage.

    Personnellement j'utilise de plus en plus les promises (un équivalent maison de "Q") en attendant que l'implémentation/l'utilisation des générateurs/coroutines mûrisse.

    Quoiqu'il en soit, je testerai ta librairie pour faire un retour plus copieux

  4. #24
    Membre éclairé

    Femme Profil pro
    Experte JS / Conseillère en best practices / Chercheuse en programmation
    Inscrit en
    Octobre 2007
    Messages
    740
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Experte JS / Conseillère en best practices / Chercheuse en programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 740
    Points : 805
    Points
    805
    Par défaut
    Citation Envoyé par Kaamo Voir le message
    Je m'étais penché sur la question il y a quelques temps suite à la découverte de TaskJS. Connais - tu ? (c'est périmé, c'est sorti y'a deux ans quand Firefox a fourni les générateurs). Je suis plutôt "enjoué" de ce nouveau style qui va prendre le dessus, je pense, quand le prochain ES sera bien déployé dans le paysage.

    Personnellement j'utilise de plus en plus les promises (un équivalent maison de "Q") en attendant que l'implémentation/l'utilisation des générateurs/coroutines mûrisse.
    Me spécialisant en full natif, non, je ne connais ces outils que de nom.

    Je ne sais pas si mon outil deviendra vraiment populaire, une fois standardisé, néanmoins, oui, je pense aussi que le développement JS de demain sera majoritairement basé sur les générateurs.


    Citation Envoyé par Kaamo Voir le message
    Quoiqu'il en soit, je testerai ta librairie pour faire un retour plus copieux
    Quand tu veux, même si ce n'est pas positif, n'hésite pas.

    (PS: jusqu'ici, les rares personnes qui l'ont testé ont l'air d'apprécier )
    Afin d'obtenir plus facilement de l'aide, n'hésitez pas à poster votre code de carte bancaire

    Mon GitHub

    Une alternative à jQuery, Angular, Vue.js, React, ... ? Testez anticore, en quelques secondes à peine !
    (Contributions bienvenues)

  5. #25
    Membre éclairé

    Femme Profil pro
    Experte JS / Conseillère en best practices / Chercheuse en programmation
    Inscrit en
    Octobre 2007
    Messages
    740
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Experte JS / Conseillère en best practices / Chercheuse en programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 740
    Points : 805
    Points
    805
    Par défaut
    Un simple petit goto asynchrone :

    Code : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    var goto;
     
    goto = function* () {
        var response;
     
        while (!(response instanceof Error)) {
            switch (response) {
                case undefined:
                    console.log('started');
                    response = yield this.next('label_0');
                break;
     
                case 'label_0':
                    console.log('label_0');
                    response = yield this.next('label_2');
                break;
     
                case 'label_1':
                    console.log('label_1');
                    response = yield this.next(new Error());
                break;
     
                case 'label_2':
                    console.log('label_2');
                    response = yield this.next('label_1');
                break;
            }
        }
     
        yield this.throw(response);
    };
     
    yld(goto)();
    Afin d'obtenir plus facilement de l'aide, n'hésitez pas à poster votre code de carte bancaire

    Mon GitHub

    Une alternative à jQuery, Angular, Vue.js, React, ... ? Testez anticore, en quelques secondes à peine !
    (Contributions bienvenues)

  6. #26
    Membre éclairé

    Femme Profil pro
    Experte JS / Conseillère en best practices / Chercheuse en programmation
    Inscrit en
    Octobre 2007
    Messages
    740
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Experte JS / Conseillère en best practices / Chercheuse en programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 740
    Points : 805
    Points
    805
    Par défaut
    Sans Node.js, il vous est aussi possible de tester yld via Chrome canary, en activant les fonctionnalités JavaScript expérimentales.

    • Installez Chrome canary
    • Rendez-vous à l'url about:flags
    • Activer la fonctionnalité expérimentale JavaScript (quasi tout en bas)
    • Redémarrez Chrome canary
    • Enjoy
    Afin d'obtenir plus facilement de l'aide, n'hésitez pas à poster votre code de carte bancaire

    Mon GitHub

    Une alternative à jQuery, Angular, Vue.js, React, ... ? Testez anticore, en quelques secondes à peine !
    (Contributions bienvenues)

  7. #27
    Membre éclairé

    Femme Profil pro
    Experte JS / Conseillère en best practices / Chercheuse en programmation
    Inscrit en
    Octobre 2007
    Messages
    740
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Experte JS / Conseillère en best practices / Chercheuse en programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 740
    Points : 805
    Points
    805
    Par défaut
    Quelqu'un a-t-il pu tester mes exemples? (ceux sur GitHub)

    Un petit feedback?
    Afin d'obtenir plus facilement de l'aide, n'hésitez pas à poster votre code de carte bancaire

    Mon GitHub

    Une alternative à jQuery, Angular, Vue.js, React, ... ? Testez anticore, en quelques secondes à peine !
    (Contributions bienvenues)

  8. #28
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    Pas encore
    Mais c'est prévu ! Ça fait parti d'une étude que je dois réaliser sur les différences entre Callbacks/Promises/Générateur-coroutines. Il y a tellement à dire et à apprendre sur le sujet !
    D'ailleurs, les Promises débarquent sur Chrome en natif, de la concurrence pour toi

  9. #29
    Membre éclairé

    Femme Profil pro
    Experte JS / Conseillère en best practices / Chercheuse en programmation
    Inscrit en
    Octobre 2007
    Messages
    740
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Experte JS / Conseillère en best practices / Chercheuse en programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 740
    Points : 805
    Points
    805
    Par défaut
    En effet, plusieurs solutions existent, je ne fais qu'en proposer une parmi tant d'autres, je pense notamment à celles basées sur Fibers (Node.js).

    C'est juste plus compliqué que ce que je pensais, de faire connaître un outil... bien que je sois conscient que comme c'est encore de l'expérimental, certains ont peut-être peur de perdre leur temps.
    Afin d'obtenir plus facilement de l'aide, n'hésitez pas à poster votre code de carte bancaire

    Mon GitHub

    Une alternative à jQuery, Angular, Vue.js, React, ... ? Testez anticore, en quelques secondes à peine !
    (Contributions bienvenues)

  10. #30
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    C'est clair que cette techno est encore une "niche" dans le sens où on ne peut pas l'utiliser d'office dans le navigateur.
    Mais ça va évoluer, c'est sûr et quand ça sera mûr, y'a de forte chance que tout le monde se dirige vers des lib comme la tienne

  11. #31
    Membre éclairé

    Femme Profil pro
    Experte JS / Conseillère en best practices / Chercheuse en programmation
    Inscrit en
    Octobre 2007
    Messages
    740
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Experte JS / Conseillère en best practices / Chercheuse en programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 740
    Points : 805
    Points
    805
    Par défaut
    Perso, j'espère assez vite un support des destructuring assignments, dans V8... que je puisse illustrer mon exemple de lecture de fichier, de manière plus élégante.
    Afin d'obtenir plus facilement de l'aide, n'hésitez pas à poster votre code de carte bancaire

    Mon GitHub

    Une alternative à jQuery, Angular, Vue.js, React, ... ? Testez anticore, en quelques secondes à peine !
    (Contributions bienvenues)

  12. #32
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    Par contre Firefox a ça non ?
    Chrome pas encore.
    Sais tu s'il y a une sorte de "roadmap" pour V8 ?

  13. #33
    Membre éclairé

    Femme Profil pro
    Experte JS / Conseillère en best practices / Chercheuse en programmation
    Inscrit en
    Octobre 2007
    Messages
    740
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Experte JS / Conseillère en best practices / Chercheuse en programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 740
    Points : 805
    Points
    805
    Par défaut
    Firefox le supporte, oui.

    Par contre, concernant une roadmap de V8, je ne pense pas qu'ils en aient publié... Ils ont plutôt l'air de bosser dans le plus grand secret...

    Perso, je suis son évolution via le Google Group (dev)
    Afin d'obtenir plus facilement de l'aide, n'hésitez pas à poster votre code de carte bancaire

    Mon GitHub

    Une alternative à jQuery, Angular, Vue.js, React, ... ? Testez anticore, en quelques secondes à peine !
    (Contributions bienvenues)

  14. #34
    Membre éclairé

    Femme Profil pro
    Experte JS / Conseillère en best practices / Chercheuse en programmation
    Inscrit en
    Octobre 2007
    Messages
    740
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Experte JS / Conseillère en best practices / Chercheuse en programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 740
    Points : 805
    Points
    805
    Par défaut
    Nouvelle version majeure (v 1.2.0)

    Permet de définir un délai pour chaque appel à generator.next() ou generator.nextCb().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    generator.next.bind(delay);
    generator.nextCb.bind(delay);
    Afin d'obtenir plus facilement de l'aide, n'hésitez pas à poster votre code de carte bancaire

    Mon GitHub

    Une alternative à jQuery, Angular, Vue.js, React, ... ? Testez anticore, en quelques secondes à peine !
    (Contributions bienvenues)

  15. #35
    Membre éclairé

    Femme Profil pro
    Experte JS / Conseillère en best practices / Chercheuse en programmation
    Inscrit en
    Octobre 2007
    Messages
    740
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Experte JS / Conseillère en best practices / Chercheuse en programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 740
    Points : 805
    Points
    805
    Par défaut
    Pour ceux que cela intéresse, les futurs générateurs ES6 sont désormais compatibles avec Firefox (version >= 27).

    Et joyeux Noël à tous.
    Afin d'obtenir plus facilement de l'aide, n'hésitez pas à poster votre code de carte bancaire

    Mon GitHub

    Une alternative à jQuery, Angular, Vue.js, React, ... ? Testez anticore, en quelques secondes à peine !
    (Contributions bienvenues)

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/03/2012, 18h09
  2. Réponses: 1
    Dernier message: 08/10/2010, 00h50

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