6

Używam Babel i Google Chrome Developer Tools z włączonymi mapami źródeł JavaScript. Biorąc pod uwagę ten kodJak ustawić punkt przerwania w wywołaniu lambda w Google Chrome DevTools?

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

jak mogę wstrzymać wykonanie przy wykonywaniu funkcji lambda element => element.value? Jeśli ustawię punkt przerwania na linii .map(element => element.value), będzie to tylko pauza, gdy mapa zostanie wykonana, ale nie wtedy, gdy zostanie wykonana funkcja lambda.

+0

Czy próbowałeś dodać znak nowej linii na ekranie źródłowym? –

+0

To działa, ale wolałbym uniknąć manipulacji kodu źródłowego, ponieważ muszę ponownie dokonać transpozycji kodu źródłowego i ponownie załadować stronę. Po debugowaniu muszę pamiętać o cofnięciu tych zmian. – maiermic

Odpowiedz

2

Ta funkcja jest już dostępna (przynajmniej w przeglądarce Google Chrome 58). Kliknij numer linii linii lambda, którą chcesz debugować (tutaj wiersz 3). Następnie aktywuj znacznik w swoim lambda (tutaj drugi), klikając go. Ponadto, ja wyłączone pierwszy marker tutaj, które mogłyby wstrzymać na map rozmowy (nie lambda):

Set breakpoint

Gdy biegnie programu i uderza przerwania, to pauza i możesz sprawdzić zmienne:

Paused on breakpoint

2

Można użyć słowa kluczowego debugger, aby zasygnalizować debuggerowi, aby zatrzymał się w tym miejscu i można go wstawić tak, jak każde polecenie JavaScript.

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

Nie znałem oświadczenia debuggera. Nauka nigdy się nie kończy. Wolałbym jednak unikać manipulacji kodu źródłowego. – maiermic

0

Można to zrobić w następujący sposób:

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

ten sposób można dodać punkt przerwania w wierszu element.value

nie udało się znaleźć sposób, aby działać bez kodu zmienia.
Jeśli ktokolwiek może znaleźć sposób, proszę powiedzieć.

+0

Nie zapomnij 'return' przed' element.value' lub otrzymasz 'undefined' jako' wartość' w 'filter'. To źle wpływa na zmianę kodu do debugowania. Nie debugujesz kodu, który chcesz debugować. – maiermic

Powiązane problemy