Skip to content

Commit 6ccc7b8

Browse files
committed
reuse timeout function
1 parent 297ea67 commit 6ccc7b8

File tree

3 files changed

+9
-7
lines changed

3 files changed

+9
-7
lines changed

src/generators/nodes/Window.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ export default class Window extends Node {
107107
});
108108

109109
const lock = block.getUniqueName(`window_updating`);
110+
const clear = block.getUniqueName(`clear_window_updating`);
110111
const timeout = block.getUniqueName(`window_updating_timeout`);
111112

112113
Object.keys(events).forEach(event => {
@@ -116,7 +117,8 @@ export default class Window extends Node {
116117
if (event === 'scroll') {
117118
// TODO other bidirectional bindings...
118119
block.addVariable(lock, 'false');
119-
block.addVariable(timeout,);
120+
block.addVariable(clear, `function() { ${lock} = false; }`);
121+
block.addVariable(timeout);
120122
}
121123

122124
const handlerBody = deindent`
@@ -161,7 +163,7 @@ export default class Window extends Node {
161163
? `#component.get("${bindings.scrollY}")`
162164
: `window.scrollY`};
163165
window.scrollTo(x, y);
164-
${timeout} = setTimeout(function() { ${lock} = false; }, 100);
166+
${timeout} = setTimeout(${clear}, 100);
165167
}
166168
`);
167169

@@ -181,7 +183,7 @@ export default class Window extends Node {
181183
${lock} = true;
182184
clearTimeout(${timeout});
183185
window.scrollTo(${isX ? 'x, window.scrollY' : 'window.scrollX, y'});
184-
${timeout} = setTimeout(function() { ${lock} = false; }, 100);
186+
${timeout} = setTimeout(${clear}, 100);
185187
});
186188
`);
187189
}

test/js/samples/window-binding-scroll/expected-bundle.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ var proto = {
190190

191191
/* generated by Svelte vX.Y.Z */
192192
function create_main_fragment(state, component) {
193-
var window_updating = false, window_updating_timeout, p, text, text_1;
193+
var window_updating = false, clear_window_updating = function() { window_updating = false; }, window_updating_timeout, p, text, text_1;
194194

195195
function onwindowscroll(event) {
196196
if (window_updating) return;
@@ -207,7 +207,7 @@ function create_main_fragment(state, component) {
207207
window_updating = true;
208208
clearTimeout(window_updating_timeout);
209209
window.scrollTo(window.scrollX, y);
210-
window_updating_timeout = setTimeout(function() { window_updating = false; }, 100);
210+
window_updating_timeout = setTimeout(clear_window_updating, 100);
211211
});
212212

213213
return {

test/js/samples/window-binding-scroll/expected.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import { appendNode, assign, createElement, createText, detachNode, init, insertNode, proto } from "svelte/shared.js";
33

44
function create_main_fragment(state, component) {
5-
var window_updating = false, window_updating_timeout, p, text, text_1;
5+
var window_updating = false, clear_window_updating = function() { window_updating = false; }, window_updating_timeout, p, text, text_1;
66

77
function onwindowscroll(event) {
88
if (window_updating) return;
@@ -19,7 +19,7 @@ function create_main_fragment(state, component) {
1919
window_updating = true;
2020
clearTimeout(window_updating_timeout);
2121
window.scrollTo(window.scrollX, y);
22-
window_updating_timeout = setTimeout(function() { window_updating = false; }, 100);
22+
window_updating_timeout = setTimeout(clear_window_updating, 100);
2323
});
2424

2525
return {

0 commit comments

Comments
 (0)