Skip to content

Commit 518c73b

Browse files
authored
Merge pull request #140 from lmcardle/patch-1
cancel scheduled debounce when service destroyed
2 parents 5d60375 + 5d24525 commit 518c73b

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

addon/services/resize.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import Service from '@ember/service';
33
import Evented from '@ember/object/evented';
44
import { classify } from '@ember/string';
55
import { oneWay, readOnly } from '@ember/object/computed';
6-
import { debounce } from '@ember/runloop';
6+
import { debounce, cancel } from '@ember/runloop';
77
import EmberObject, { set, getWithDefault } from '@ember/object';
88

99
// jscs:disable disallowDirectPropertyAccess
@@ -15,7 +15,6 @@ export default Base.extend(Evented, {
1515
_oldHeight: window.innerHeight,
1616
_oldWidthDebounced: window.innerWidth,
1717
_oldHeightDebounced: window.innerHeight,
18-
1918
debounceTimeout: oneWay('defaultDebounceTimeout'),
2019
widthSensitive: oneWay('defaultWidthSensitive'),
2120
heightSensitive: oneWay('defaultHeightSensitive'),
@@ -28,7 +27,8 @@ export default Base.extend(Evented, {
2827
this._setDefaults();
2928
this._onResizeHandler = evt => {
3029
this._fireResizeNotification(evt);
31-
debounce(this, this._fireDebouncedResizeNotification, evt, this.get('debounceTimeout'));
30+
let scheduledDebounce = debounce(this, this._fireDebouncedResizeNotification, evt, this.get('debounceTimeout'));
31+
this._scheduledDebounce = scheduledDebounce;
3232
};
3333
if (typeof FastBoot === 'undefined') {
3434
this._installResizeListener();
@@ -40,6 +40,7 @@ export default Base.extend(Evented, {
4040
if (typeof FastBoot === 'undefined') {
4141
this._uninstallResizeListener();
4242
}
43+
this._cancelScheduledDebounce();
4344
},
4445

4546
_setDefaults() {
@@ -76,6 +77,10 @@ export default Base.extend(Evented, {
7677
window.removeEventListener('resize', this._onResizeHandler);
7778
},
7879

80+
_cancelScheduledDebounce() {
81+
cancel(this._scheduledDebounce);
82+
},
83+
7984
_fireResizeNotification(evt) {
8085
const { innerWidth, innerHeight } = window;
8186
if (this._hasWindowSizeChanged(innerWidth, innerHeight)) {

0 commit comments

Comments
 (0)