Do not remove listeners while dispatching event
This commit is contained in:
@@ -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]);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user