Mam funkcję, która wykonuje jakąś komunikację z serwerem zgłaszania aktualną geometrię ekranu itpJak połączyć dławienie z subskrypcją w knockout-ie?
function sendScreenLayout() {
logElementLocations(exp.getPageCoordinates());
};
I subskrybować tę funkcję do niektórych zdarzeń w moim kodu tak:
viewModel.onLayoutChange.subscribe(sendScreenLayout);
$('#right-splitter > #mainContent').resize(sendScreenLayout);
$(window).resize(sendScreenLayout);
...
setTimeout(sendScreenLayout, 1);
Some z tych wydarzeń może być wysyłany zbyt często, aby mógł być użytecznie obsługiwany przez serwer, a ja chciałbym ograniczyć żądania do rozsądnej stawki.
Najlepszym mogę wymyślić było coś takiego:
var triggerSend = ko.observable();
ko.computed(function() {
triggerSend();
logElementLocations(exp.getPageCoordinates());
}).extend({throttle: 200});
function sendScreenLayout() {
triggerSend.valueHasMutated();
}
Czy jest bardziej zwięzły sposób robienia tego wzoru, czy jest to do zrobienia?
Świetna odpowiedź tutaj! –