From 9961519532d65ce0fea99ba825d6d05d03691c52 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Sep 2016 16:08:27 +0200 Subject: [PATCH] event: any --- src/vs/base/common/event.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/vs/base/common/event.ts b/src/vs/base/common/event.ts index b5725d166f0..7d6921f7881 100644 --- a/src/vs/base/common/event.ts +++ b/src/vs/base/common/event.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ 'use strict'; -import {IDisposable} from 'vs/base/common/lifecycle'; +import {IDisposable, dispose} from 'vs/base/common/lifecycle'; import CallbackList from 'vs/base/common/callbackList'; import {EventEmitter} from 'vs/base/common/eventEmitter'; import {TPromise} from 'vs/base/common/winjs.base'; @@ -216,6 +216,21 @@ export function filterEvent(event: Event, filter: (e:T)=>boolean): Event event(e => filter(e) && listener.call(thisArgs, e), null, disposables); } +export function any(...events: Event[]): Event { + let listeners = []; + + const emitter = new Emitter({ + onFirstListenerAdd() { + listeners = events.map(e => e(() => emitter.fire(), null)); + }, + onLastListenerRemove() { + listeners = dispose(listeners); + } + }); + + return emitter.event; +} + export function debounceEvent(event: Event, merger: (last: O, event: I) => O, delay: number = 100): Event { let subscription: IDisposable; -- GitLab