6

Tôi sử dụng Công cụ dành cho nhà phát triển của Babel và Google Chrome với các bản đồ nguồn JavaScript được bật. Được cung cấp mã nàyCách đặt điểm ngắt tại cuộc gọi lambda trong Google Chrome DevTools?

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

làm cách nào để tạm dừng thực thi khi thực thi hàm lambda element => element.value? Nếu tôi đặt điểm ngắt tại dòng .map(element => element.value), nó sẽ chỉ tạm dừng khi ánh xạ được thực thi, nhưng không phải khi hàm lambda được thực thi.

+0

Bạn đã thử thêm dòng mới vào màn hình nguồn chưa? –

+0

Điều đó có hiệu quả, nhưng tôi muốn tránh thao tác mã nguồn, bởi vì tôi phải chuyển mã nguồn của tôi lại và tải lại trang. Sau khi gỡ lỗi, tôi phải nhớ để hoàn tác những thay đổi này. – maiermic

Trả lời

2

Tính năng này cuối cùng cũng có sẵn (ít nhất là trong Google Chrome 58). Nhấp vào số dòng của dòng lambda của bạn mà bạn muốn gỡ lỗi (ở đây dòng 3). Sau đó kích hoạt điểm đánh dấu trong lambda của bạn (ở đây thứ hai) bằng cách nhấp vào nó. Hơn nữa, tôi bị vô hiệu hóa các điểm đánh dấu đầu tiên ở đây, trong đó sẽ tạm dừng trên map cuộc gọi (không phải là lambda):

Set breakpoint

Khi chương trình chạy và bạn chạm breakpoint, nó sẽ dừng lại và bạn có thể kiểm tra các biến:

Paused on breakpoint

2

Bạn có thể sử dụng từ khóa debugger để báo hiệu trình gỡ lỗi tạm dừng tại vị trí đó và nó có thể được chèn giống như bất kỳ câu lệnh JavaScript nào.

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

Tôi không biết câu lệnh trình gỡ lỗi. Học không bao giờ dừng lại. Tuy nhiên, tôi muốn tránh thao tác mã nguồn. – maiermic

0

Bạn có thể làm như sau:

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

Bằng cách này bạn có thể thêm một breakpoint trong dòng element.value

Không thể tìm thấy một cách để làm cho nó hoạt động mà không có mã thay đổi.
Nếu ai cũng có thể tìm được cách, vui lòng cho biết.

+0

Đừng quên 'return' trước' element.value' hoặc bạn nhận được 'undefined' là' value' trong 'filter'. Đó là xấu về việc thay đổi mã để gỡ lỗi. Bạn không gỡ lỗi mã mà bạn thực sự muốn gỡ lỗi. – maiermic

Các vấn đề liên quan