Cá nhân tôi thấy debounce khó hiểu hơn ga .
Vì cả hai chức năng đều giúp bạn trì hoãn và giảm tỷ lệ thực hiện. Giả sử bạn đang gọi các chức năng được trang trí được trả về bằng cách điều chỉnh / gỡ lỗi liên tục ...
- Van tiết lưu : chức năng ban đầu được gọi nhiều nhất một lần trong một khoảng thời gian xác định.
- Gỡ lỗi : chức năng ban đầu được gọi sau khi người gọi dừng gọi chức năng trang trí sau một khoảng thời gian xác định .
Tôi tìm thấy phần cuối cùng của việc ra mắt rất quan trọng để hiểu mục tiêu mà nó đang cố gắng đạt được. Tôi cũng tìm thấy một phiên bản cũ của việc triển khai _.debounce giúp hiểu biết (lịch sự của https://davidwalsh.name/feft-debounce ).
// Returns a function, that, as long as it continues to be invoked, will not
// be triggered. The function will be called after it stops being called for
// N milliseconds. If `immediate` is passed, trigger the function on the
// leading edge, instead of the trailing.
_.debounce = function(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
Một phép ẩn dụ xa vời, nhưng có lẽ cũng có thể giúp đỡ.
Bạn có một người bạn tên Chatty, người thích nói chuyện với bạn qua IM. Giả sử khi cô ấy nói chuyện, cô ấy sẽ gửi một tin nhắn mới cứ sau 5 giây, trong khi biểu tượng ứng dụng IM của bạn đang nảy lên và xuống, bạn có thể lấy ...
- Cách tiếp cận ngây thơ : kiểm tra mọi tin nhắn miễn là nó đến. Khi biểu tượng ứng dụng của bạn bị trả lại, hãy kiểm tra. Đó không phải là cách hiệu quả nhất, nhưng bạn luôn cập nhật.
- Cách tiếp cận bướm ga : cứ sau 5 phút bạn lại kiểm tra một lần (khi có cái mới). Khi có tin nhắn mới, nếu bạn đã kiểm tra bất cứ lúc nào trong 5 phút cuối, hãy bỏ qua nó. Bạn tiết kiệm thời gian của bạn với phương pháp này, trong khi vẫn còn trong vòng lặp.
- Cách tiếp cận gỡ lỗi : bạn biết Chatty, cô ấy chia toàn bộ câu chuyện thành từng mảnh, gửi chúng trong một tin nhắn khác. Bạn đợi cho đến khi Chatty kết thúc toàn bộ câu chuyện: nếu cô ấy dừng gửi tin nhắn trong 5 phút, bạn sẽ cho rằng cô ấy đã kết thúc, bây giờ bạn kiểm tra tất cả.