прослушивание выполнения функции - PullRequest
1 голос
/ 31 мая 2019

У меня есть функция doSomething(), которая может быть вызвана много разных событий DOM. Можно ли слушать не событие, а момент, когда эта функция вызывается / слушать выполнение функции?

Я имею в виду - я не могу отредактировать исходную функцию и ищу решение, не хочу повторять все, связывая другую функцию со всеми этими событиями.

Ответы [ 2 ]

4 голосов
/ 31 мая 2019

Если возможно переопределить функцию, вы можете сохранить оригинал, переопределить его, а затем вызвать оригинал. Я настроил это на использование rxjs, как указано в тегах вопроса, но принцип этого применим с или без него.

const DO_SOMETHING_EVENT_NAME = 'doSomething called';

function doSomething() {
  console.log('doing something');
}


var doSomethingOriginal = doSomething;
window.doSomething = function () {
  var event = new Event(DO_SOMETHING_EVENT_NAME);
  document.dispatchEvent(event);
  doSomethingOriginal();
};

var observable = rxjs.fromEvent(document, DO_SOMETHING_EVENT_NAME);

observable.subscribe(() => console.log('doing something else'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.5.2/rxjs.umd.js"></script>
<button onclick="doSomething()">First</button>
<button onclick="doSomething()">Second</button>
0 голосов
/ 31 мая 2019

Из того, что я могу сказать из этого ответа вам нужно что-то, что реализует "аспектно-ориентированное программирование (AOP)" https://github.com/cujojs/meld

...