Cosa può ES6 Classes fornire, come un modello di organizzazione, al codice asincrono. Di seguito è riportato un esempio con ES7 async/await, una classe ES6 può avere un metodo asincrono o un costruttore in ES7?Le classi ES6 JavaScript sono di qualsiasi uso con basi di codice asincrone?
posso fare:
class Foo {
async constructor() {
let res = await getHTML();
this.res = res
}
}
E, se non come dovrebbe un'opera costruttore che fa questo?
class Foo {
constructor() {
getHTML().then(function (res) {
this.res = res
}
}
}
Se nessuno di questi schemi di lavoro, un costruttore può (e classi Inoltre) in un ES6 class
supportare qualsiasi forma di asincronia che opera su stato dell'oggetto? O sono solo per basi di codice puramente sincrone? Gli esempi di cui sopra sono nel costruttore, ma non hanno bisogno di essere .. Spingendo il problema giù un altro livello ..
class Foo {
myMethod() {
/* Can I do anything async here */
}
}
Oppure, con un getter ...
class Foo {
get myProp() {
/* Is there any case that this is usefully asynchronous */
}
}
Il solo degli esempi a cui potrei pensare è di eseguire qualcosa in parallelo all'interno dello stesso metodo/costruttore/getter, ma per risolvere il tutto prima della conclusione. Sono solo confuso perché sembra con tutta la spinta verso librerie completamente asincrone, questo serve solo a confondere le cose. Ad eccezione degli esempi da manuale, non riesco a trovare un'applicazione per la quale sono utile.
si * potrebbe * restituire una promessa da parte del costruttore che si risolve con l'istanza dando così accesso all'istanza una volta inizializzata. –
@KevinB mi è venuto in mente il pensiero, ma suona orribile. –
Non mi piace particolarmente, ma ... quale altro modo ci sarebbe? deve esserci una richiamata da qualche parte, o sarà una promessa o una richiamata passata come parametro. async/await ha ancora un callback, semplicemente non lo vedi. –