javascript中的事件侦听器

javascript中的事件侦听器,javascript,javascript-events,Javascript,Javascript Events,javascript有一种事件监听器吗 我的场景: 我想用不同的参数执行Inc函数2次,第一次执行Inc,然后第二次执行,但第二次执行必须在第一次Inc函数完成后的X秒(settimeout…)后执行(所有迭代,只要clearInterval) 所以我需要一种事件和一个侦听器(当然它必须是异步的)。 你有什么建议?(请不要用jquery…) AFAIK没有标准化的定制事件类型,但您正在努力解决这一问题 以这种方式调用“委托”: var myFunction = function() {

javascript有一种事件监听器吗

我的场景:
我想用不同的参数执行Inc函数2次,第一次执行Inc,然后第二次执行,但第二次执行必须在第一次Inc函数完成后的X秒(settimeout…)后执行(所有迭代,只要clearInterval)

所以我需要一种事件和一个侦听器(当然它必须是异步的)。
你有什么建议?(请不要用jquery…)


AFAIK没有标准化的定制事件类型,但您正在努力解决这一问题

以这种方式调用“委托”:

var myFunction = function() {
    // CALL Inc with different params, this is your "event"
};

function Inc(val1, val2) {
   setInterval(myFunction,400);
}

简短回答,不适用于自定义事件(仅适用于DOM标准事件),但您可以伪造它。

编辑:好吧,因为我不知道为什么您不想让它知道延续,这里有另一个建议,具有完全相同的语义,但可能是一个理想的语法,现在有一个事件委派的模拟:)(问题是,您需要Inc函数以某种方式报告完成情况):

Previous:像这样的东西应该是关键(不过我没有测试):

那么就这样称呼它:

Inc(x, y, function(){ Inc(y, z); });

我通常尝试远离超时,尤其是当它们处理需要递归的事情时

但是如果函数只执行两次,为什么需要递归呢

// 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);

不可以。您可以为窗口、文档和一些DOM元素(onclick、onload、onunload等)中的事件附加一些内置事件处理程序,但您必须通过其他方式模拟“真实”事件处理程序功能。但在这种情况下,Inc“知道”第二个Inc(尽管它是匿名的,但仍然知道)我不想这样。我添加了一个新的建议,但现在,你必须返回一个句柄,所以这不是一个很好的解决方案。Inc foo用于动画(当然它有更多的代码),所以我需要setintervalI运行Inc第一次在一个方向上为元素设置动画,然后,在x秒后,我使用相同的Inc在另一个方向上为对象设置动画
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); });
// 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);