javascript是否有一种事件监听器?
我的情景:
我想用不同的参数执行Inc函数2次,首先执行Inc然后执行第二次执行,但是第二次执行必须在第一次Inc函数完成后的X秒(settimeout ...)之后执行(所有它的迭代,一旦clearInterval)。
所以我需要一些事件和一个监听器(当然它必须是异步的) 你能提出什么建议? (请不要jquery ......)
function Inc(val1,val2){
var intervalID = setInterval(function(){
if (val1 > val2) clearInterval(intervalID);
val1= val1 + 10;
}, 400);
}
答案 0 :(得分:2)
我经常试图远离超时,特别是如果他们处理需要递归的事情。
但是如果函数只执行两次,为什么还需要递归呢?
// call Inc the first time
Inc();
// this will execute only after the first Inc(); is done.
// call Inc the second time after X seconds
setTimeout(Inc, 400);
答案 1 :(得分:1)
编辑:好吧,因为我不知道为什么你不想让它知道延续,这里有另一个建议,它具有完全相同的语义,但可能是一个理想的语法,现在有了无论如何模拟事件委托:)(事情是,你需要Inc函数以某种方式报告完成):
function Inc(val1,val2){
var handle = { oncomplete: null };
var intervalID = setInterval(function(){
if (val1 > val2)
{
clearInterval(intervalID);
if (handle.oncomplete) handle.oncomplete();
}
val1 = val1 + 10;
}, 400);
return handle;
}
Inc(10, 40).oncomplete = function(){ alert("Finish"); };
上一篇:这样的事情应该是诀窍(虽然我没有测试过):
function Inc(val1,val2, continuation){
var intervalID = setInterval(function(){
if (val1 > val2)
{
clearInterval(intervalID);
if (continuation) continuation();
}
val1 = val1 + 10;
}, 400); }
然后这样称呼:
Inc(x, y, function(){ Inc(y, z); });
答案 2 :(得分:0)
AFAIK没有标准化的自定义事件类型,但您正在进行解决方案。
以这种方式呼叫“代表”:
var myFunction = function() {
// CALL Inc with different params, this is your "event"
};
function Inc(val1, val2) {
setInterval(myFunction,400);
}
简短回答,不是自定义事件(只有DOM标准事件),但你可以伪造它。