Sto lavorando a una webapp in Node JS, utilizzando il framework Koa.Un modo migliore per eseguire il debug di JS con i generatori in IntelliJ o WebStorm
Tutto il controllo del flusso viene eseguito con i generatori, anziché i callback. Il codice sembra sequenziale, sebbene il flusso reale non lo sia. Ad ogni modo sembra molto più pulito dell'inferno del callback.
Ecco un semplice esempio di una funzione di controllo scritto con KOA:
function *findUserById(userId)
{
var user = yield getUserOrError404(userId);
yield loadAdditionalData(user);
yield data.users.save(user);
return user;
}
Howeve c'è una difficoltà: passo del codice con yield
s nel mio IDE (IntelliJ IDEA) non funziona molto bene. Una volta che l'esecuzione è in linea con l'istruzione yield
, se ho appena "scavalcato", i flussi di esecuzione salgono allo stack di codice koa (questo non è proprio l'errore dell'IDE poiché segue solo il flusso effettivo di esecuzione dei generatori , dichiarazioni di rendimento e loop di eventi di nodo).
Attualmente devo impostare un punto di interruzione alla prossima istruzione. Voglio che il debugger si interrompa, frequentemente la riga successiva, e faccia clic sul pulsante "Riprendi programma".
Può diventare noioso quando ci sono più di 2-3 dichiarazioni di rendimento.
C'è un modo migliore (trucco, plug-in, ...) per passare attraverso il codice JS generatore-pesante che consente di scavalcare una dichiarazione di rendimento come se fosse un'istruzione sequenziale "normale"?
Questo è già un grande miglioramento rispetto al metodo dei punti di interruzione. Grazie ! Vorrei però che esistesse un metodo di "emulazione" più avanzato per passare in modo trasparente alle chiamate dei generatori. Aspetterò un po ', forse qualcuno potrà inventare una tale magia ... altrimenti accetterò questa risposta. –
Oh, e utile anche per sessioni di debug regolari;) –
Accetterò la tua risposta, fino a quando, forse, si spera, un giorno, strumenti come IntelliJ abbiano una modalità di debug "generatore consapevole" che consente di superare le dichiarazioni di rendimento in modo trasparente. –