【问题标题】:listening for a function execution监听函数执行
【发布时间】:2019-10-17 02:11:26
【问题描述】:
我有一个函数doSomething() 可以被触发
许多不同的 DOM 事件。
是否可以不听事件,而是听某个时刻,当该函数被调用/听函数执行时?
我的意思是 - 我无法编辑原始函数并寻找解决方案,不想重复所有这些事件的附加函数。
【问题讨论】:
标签:
javascript
rxjs
rxjs5
rxjs6
【解决方案2】:
如果可以覆盖该函数,您可以存储原件,覆盖它,然后调用原件。我已将其设置为使用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>