Node.js dispone ora di generatori.Cercando di capire generatori/rendimento in node.js - cosa esegue la funzione asincrona?
La mia comprensione è che i generatori possono essere utilizzati per scrivere codice che sembra essere molto più lineare ed evita la codifica dell'inferno di callback e della piramide di doom.
Quindi, a questo punto, la mia comprensione è che all'interno di un generatore, il codice viene eseguito finché non raggiunge un'istruzione "yield". L'esecuzione della funzione del generatore si interrompe a questo punto. L'istruzione yield
specifica un valore restituito che può essere una funzione. Normalmente questa sarebbe una funzione I/O di blocco, che normalmente dovrebbe essere eseguita in modo asincrono.
La funzione di ritorno del rendimento viene restituita a qualsiasi cosa chiamata generatore.
La mia domanda è, cosa succede a questo punto? Cosa esegue esattamente la funzione I/O di blocco restituita dalla resa?
È corretto che per scrivere il codice generatore/rendimento che sembra essere lineare, ci deve essere un tipo specifico di funzione che chiama il generatore, una funzione che scorre attraverso il generatore ed esegue ogni funzione asincrona restituita dal cede e restituisce il risultato della funzione asynch nel generatore?
Non mi è ancora chiaro esattamente come viene eseguita la funzione asynch restituita dal rendimento. Se viene eseguito dalla funzione che chiama il generatore, viene eseguito in modo asincrono? Sto indovinando così perché fare altrimenti comporterebbe il comportamento di bloccaggio.
In sintesi le mie domande:
- Per scrivere "lineare" di codice asincrono con i generatori, è necessario che vi sia una funzione di chiamata che scorre oltre il generatore, l'esecuzione delle funzioni fruttati come callback e restituendo il risultato del callback nel generatore?
- Se la risposta alla domanda 1 è sì, esattamente come vengono eseguite le funzioni rese - in modo asincrono?
Qualcuno può offrire una panoramica/riepilogo migliore di come funziona l'intero processo?
Ciò può aiutare in qualche modo, anche i collegamenti al codice nel post: http: //bjouhier.wordpress.com/2013/06/01/bring-asyncawait-to-life-in-javascript/ –
Si consiglia di dare un'occhiata a https://github.com/loveencounterflow/coffy-script che ha una introduzione graduale passo dopo passo alla programmazione asincrona con i generatori. – flow