Javascript检查是否在其他文件上创建了函数
嘿,我正在创建一个DOM javascript库,发现自己有以下问题: 例如,如果我使用一个函数,比如说Javascript检查是否在其他文件上创建了函数,javascript,Javascript,嘿,我正在创建一个DOM javascript库,发现自己有以下问题: 例如,如果我使用一个函数,比如说function update(),我如何检查该函数是否已在另一个文件上创建;如果它是在另一个文件上创建的,我如何让它运行一次或每隔几秒钟,而用户不需要这样做 例如,在图书馆: && *编辑:试着对我的问题更清楚谢谢你的回答 用户不需要调用setInterval()来重复update(),而是可以自己调用它 function update() { setInterval(functio
function update()
,我如何检查该函数是否已在另一个文件上创建;如果它是在另一个文件上创建的,我如何让它运行一次或每隔几秒钟,而用户不需要这样做
例如,在图书馆:
&&
*编辑:试着对我的问题更清楚谢谢你的回答 用户不需要调用
setInterval()
来重复update()
,而是可以自己调用它
function update() {
setInterval(function() {
// do something
}, 1000);
}
所有需要完成的实际工作都在//do something
所在的位置。setTimeout(func,1000)
将在1000毫秒后调用func
如果您希望立即调用函数,可以执行递归(这种方法不好,最好使用循环,但下面的示例很有用):
现在,您可以使用setTimeout
并告诉update
稍后运行
// calls itself infinitely, 1 second delay between calls
function update(){
setTimeout(update, 1000);
}
这里没有递归。相反,您将对update()
的调用延迟一秒钟。第二次调用update()
问题的第二部分:
//call itself once the page is loaded
function start(){
}
您可以在加载页面时将事件侦听器设置为,并调用该函数:
window.addEventListener('load', start);
定义start()
后立即执行此操作
要反映您的意见:
如果要检测全局函数update
是否已定义(可能由用户定义),并希望以1秒的相等间隔开始自动调用,则需要使用typeof
检查其存在性,然后对其应用setInterval
:
if(typeof update === "function") {
setInterval(update, 1000);
}
要明确表示您引用的是全局update
而不是局部变量,可以改用window.update
。在这种情况下,您还可以通过以下方式检查它是否存在:
if(update in window)
您可以在函数中无休止地使用setTimeout
。。但我认为你的问题有可能被关闭,因为它非常模糊。尤其是标题..为什么不使用setInterval?setInterval
正是为了这个目的。你为什么要避免它?我想创建一个库,每次调用这样的函数时,它都可以自己重复,而不是让用户自己去做@Al.G.@vsync我真的不知道如何要求它对你说实话……第一部分,我的主要意思是,如果用户创建了一个名为“update”的函数,脚本会自动为该函数设置1秒的间隔。第二部分为我提供了start()的解决方案谢谢@Ran编辑了我的答案,为您澄清的问题提供了解决方案。很高兴听到这个消息!下一次,尽量做到清晰明了,以便更快、更积极地回答:)
window.addEventListener('load', start);
if(typeof update === "function") {
setInterval(update, 1000);
}
if(update in window)