我有一个函数,它会利用setTimeout()和随机生成的数字在随机时间调用。
function fireAtRandomTimes(){
dostuff;
setTimeout(fireAtRandomTimes, Math.random() * 20000);
}
我想在每次fireAtRandomTimes()完成运行时都调用一个函数,而无需操纵fireAtRandomTimes()函数。
jQuery的$ .when和$ .then似乎与我要寻找的内容很接近,但问题是这些方法中的每一个仅执行一次。
$.when( fireAtRandomTimes() ).then(function() {
console.log('when');
});
我还尝试创建一个使用$ .when的函数,并在最后调用自身,这导致了无限循环。
每次随机计时的函数完成运行后,如何使用jQuery调用函数?
答案 0 :(得分:0)
是什么使您无法修改fireAtRandomTimes()
?解释为什么您要尝试执行此操作的更多上下文可能会揭示实际上还有其他解决方案(代理,包装等)。
如果您拥有fireAtRandomTimes()
的控制权,则可以进行一次修改即可完成。 (因此,您可以在多个项目中重用fireAtRandomTimes()
,而无需进一步修改。)您只需要添加一个custom event,如下所示:
function fireAtRandomTimes(){
window.dispatchEvent(new Event('customEvent'));
setTimeout(fireAtRandomTimes, Math.random() * 20000);
}
window.addEventListener('customEvent', function(e) {
console.log('Custom Event')
});