6

Uso gli strumenti per sviluppatori Babel e Google Chrome con le mappe sorgente JavaScript abilitate. Dato questo codiceCome impostare un punto di interruzione a una chiamata lambda in Google Chrome DevTools?

function myFunc(elements) { 
    return elements 
    .map(element => element.value) 
    .filter(value => value >= 0); 
} 

come posso sospendere l'esecuzione in esecuzione della funzione lambda element => element.value? Se imposto un breakpoint alla riga .map(element => element.value), si fermerà solo quando viene eseguita la mappa, ma non quando viene eseguita la funzione lambda.

+0

Hai provato ad aggiungere una nuova riga lì nel display sorgente? –

+0

Funziona, ma preferirei evitare la manipolazione del codice sorgente, perché devo ri-traspondere il mio codice sorgente e ricaricare la pagina. Dopo il debug, devo ricordare di annullare queste modifiche. – maiermic

risposta

2

Questa funzione è finalmente disponibile (almeno in Google Chrome 58). Fai clic sul numero di riga della linea del tuo lambda che desideri eseguire il debug (qui riga 3). Quindi attiva il marker nel tuo lambda (qui il secondo) facendo clic su di esso. Inoltre, ho disabilitato il primo marcatore qui, che sarebbe una pausa sul map chiamata (non il lambda):

Set breakpoint

Quando il programma viene eseguito e colpisce il punto di interruzione, per mettere in pausa e si può ispezionare variabili:

Paused on breakpoint

2

È possibile utilizzare la parola chiave debugger per segnalare al debugger di mettere in pausa in quella posizione e può essere inserito proprio come qualsiasi istruzione JavaScript.

function myFunc(elements) { 
    return elements 
    .map(element => {debugger; return element.value}) 
    .filter(value => value >= 0); 
} 
+1

Non conoscevo la dichiarazione del debugger. L'apprendimento non si ferma mai. Tuttavia, preferirei evitare la manipolazione del codice sorgente. – maiermic

0

Si può fare come segue:

function myFunc(elements) { 
     return elements 
     .map(element => { 
      element.value 
     }) 
     .filter(value => value >= 0); 
    } 

In questo modo è possibile aggiungere un punto di interruzione in linea element.value

Impossibile trovare un modo per farlo funzionare senza codice cambiare.
Se qualcuno può trovare un modo, per favore, dica.

+0

Non dimenticare 'return' before' element.value' o ottieni 'undefined' come' value' in 'filter'. Non va bene cambiare il codice per eseguire il debug. Non esegui il debug del codice che desideri effettivamente eseguire il debug. – maiermic

Problemi correlati