Do not remove listeners while dispatching event

This commit is contained in:
Andreas Hocevar
2016-03-08 09:30:09 +01:00
parent 951b400227
commit 93f26a90d0
3 changed files with 43 additions and 9 deletions

View File

@@ -214,7 +214,7 @@ describe('ol.events', function() {
var key2 = ol.events.listen(target, 'foo', listener, {});
expect(key1.boundListener).to.not.equal(key2.boundListener);
expect(target.getListeners('foo')).to.eql(
[key2.boundListener, key1.boundListener]);
[key1.boundListener, key2.boundListener]);
});
});

View File

@@ -115,6 +115,21 @@ describe('ol.events.EventTarget', function() {
expect(events[0]).to.equal(event);
expect(events[0].target).to.equal(eventTarget);
});
it('is safe to remove listeners in listeners', function() {
eventTarget.addEventListener('foo', spy3);
eventTarget.addEventListener('foo', function() {
eventTarget.removeEventListener('foo', spy1);
eventTarget.removeEventListener('foo', spy2);
eventTarget.removeEventListener('foo', spy3);
});
eventTarget.addEventListener('foo', spy1);
eventTarget.addEventListener('foo', spy2);
expect(function() {
eventTarget.dispatchEvent('foo');
}).not.to.throwException();
expect(called).to.eql([3]);
expect(eventTarget.getListeners('foo')).to.have.length(1);
});
});
describe('#dispose()', function() {