var oTimer=null;
var fn=function(){
console.log('run fn')
}
oTimer=setTimeout(function(){
fn()
oTimer=setTimeout(arguments.callee,111)
},111)
setTimeout(function(){clearTimeout(oTimer)},1100)我想要实现一个函数 var oTimer=fnSetTimeout(fnName,iDaleyTime)
然后可以通过clearTimeout(oTimer)来清除浮动
如能告知实现思路或者示例代码感激不尽!JavaScript函数
//....你的业务代码
return setTimeout(你的业务代码);
}
var map = {};
var id = 1;
window.setInterval = function(fn, interval) {
var key = 'interval_' + id;
id++;
var frame = function() {
setTimeout(fn, 0);
map[key] = setTimeout(frame, interval);
};
map[key] = setTimeout(frame, interval);
return key;
};
window.clearInterval = function(key) {
clearTimeout( map[key] );
};})();
好了,这样你就把 window 自带的 setInterval 和 clearInterval 给替换掉了
缺点只是你自己的用法逻辑导至,你硬要重复声明setInterval当然重复
还有不要迷信什么高级权威指南,字典性质的东西,不分受众
权威指南还说闭包可能导致内存泄露呢,而且也确实有可能,但难道就不能用闭包了?造成泄露了只是你自己水平有限,逻辑不严谨而已,与其去寻找不用闭包的方法,不如把闭包理解好,提升水平。
同理
钻研不用setInterval的方法还不如仔细了解一下javascript标准中对setInterval的说明,正确地使用它
缺点只是你自己的用法逻辑导至,你硬要重复声明setInterval当然重复
还有不要迷信什么高级权威指南,字典性质的东西,不分受众
权威指南还说闭包可能导致内存泄露呢,而且也确实有可能,但难道就不能用闭包了?造成泄露了只是你自己水平有限,逻辑不严谨而已,与其去寻找不用闭包的方法,不如把闭包理解好,提升水平。
同理
钻研不用setInterval的方法还不如仔细了解一下javascript标准中对setInterval的说明,正确地使用它
我想要一个setTimeout模拟的setInterva方法 结果你给我说直接用setInterval 你想表达什么?
那不叫缺点,只是setInterval()的特性而已,你的定时器重复,那是没有处理好<script type="text/javascript">
var oTime;
function myInterval(f,d)
{
clearInterval(f.__Interval__);
return f.__Interval__=setInterval(f,d);
}
function run()
{
document.getElementById("dd").innerHTML ++;
}
</script>
<span id="dd">1</span>
<input type="button" value="运行" onclick="oTime=myInterval(run,111)" />
<input type="button" value="停止" onclick="clearInterval(oTime);" />