Sont JavaScript ES6 Classes de toute utilisation avec le code asynchrone bases?

Ce qui peut ES6 Classes fournir, comme un modèle d'organisation, de code asynchrone. Ci-dessous un exemple avec ES7 async/await, peut-ES6-classe ont une méthode asynchrone, ou d'un constructeur dans l'ES7?

Puis-je faire:

class Foo {
    async constructor() {
        let res = await getHTML();
        this.res = res
    }
}

Et, si non comment un constructeur de travail qui fait cela?

class Foo {
    constructor() {
        getHTML().then( function (res) {
            this.res = res
        }
    }
}

Si aucune de ces habitudes de travail, un constructeur (et d'ailleurs classes) dans un ES6 class soutenir toute forme de l'asynchronicité qui fonctionne sur l'état de l'objet? Ou, sont-ils uniquement à des fins purement synchrone bases de code? Les exemples ci-dessus sont dans le constructeur, mais ils n'ont pas besoin d'être.. en Poussant le problème à un autre niveau..

class Foo {
    myMethod () {
      /* Can I do anything async here */
    }
}

Ou, avec un getter...

class Foo {
    get myProp() {
        /* Is there any case that this is usefully asynchronous */
    }
}

Les seuls exemples que je pouvais penser est de lancer quelque chose en parallèle à l'intérieur de la même méthode/constructeur/getter, mais de l'ensemble de la chose résoudre avant la conclusion. Je suis juste confus parce qu'il semble avec tous les pousser à totalement asynchrones bibliothèques, cela sert juste à confondre les choses. Sauf pour les exemples classiques, je ne peux pas trouver une application utile pour.

  • vous pouviez retourner une promesse du constructeur qui se résout avec l'instance vous donnant ainsi accès à l'instance une fois qu'il est initialisé.
  • la pensée ne se produire pour moi, mais il semble horrible.
  • Je n'aime pas particulièrement non plus, mais... quel autre moyen y aurait-il? il y a un rappel de quelque part, c'est soit d'aller à une promesse ou d'un callback passé en paramètre. async/await a encore un rappel, vous n'avez tout simplement pas le voir.
  • Je pense que vous avez raison, je pense que les Classes ne sont qu'un bientôt-à-être anti-modèle. D'entrer dans avec un asychronous base de code va être très difficile de sortir d'écrire vraiment utile bibliothèques asynchrones va être très difficile, et de la prospective de l'appelant, il va être extrêmement difficile à écrire, await new Foo(url); j'ai fait de la question plus vaste, et je ne veux pas supposer que je connais la réponse. Nous allons attendre et voir si quelqu'un les tambours de quoi que ce soit d'autre. Si pas, je vais bounty il.
InformationsquelleAutor Evan Carroll | 2016-05-31