mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-01-06 06:01:31 -05:00
fix(client): worker executor task once (#46951)
This commit is contained in:
@@ -129,16 +129,17 @@ const eventify = self => {
|
||||
|
||||
self.emit = (event, ...args) => {
|
||||
if (typeof self._events[event] !== 'undefined') {
|
||||
self._events[event].forEach(listener => {
|
||||
const listeners = self._events[event].slice();
|
||||
for (let listener of listeners) {
|
||||
listener.apply(self, args);
|
||||
});
|
||||
}
|
||||
}
|
||||
return self;
|
||||
};
|
||||
|
||||
self.once = (event, listener) => {
|
||||
self.on(event, function handler(...args) {
|
||||
self.removeListener(handler);
|
||||
self.removeListener(event, handler);
|
||||
listener.apply(self, args);
|
||||
});
|
||||
return self;
|
||||
|
||||
@@ -232,3 +232,15 @@ it('Worker executor should get worker from specified location', async () => {
|
||||
expect(global.Worker).toBeCalledTimes(1);
|
||||
expect(global.Worker).toBeCalledWith('/other/location/test.js');
|
||||
});
|
||||
|
||||
it('Task should only emit handler once', () => {
|
||||
mockWorker();
|
||||
const testWorker = createWorker('test');
|
||||
const task = testWorker.execute('test');
|
||||
const handler = jest.fn();
|
||||
task.once('testOnce', handler);
|
||||
|
||||
task.emit('testOnce', handler);
|
||||
task.emit('testOnce', handler);
|
||||
expect(handler).toBeCalledTimes(1);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user