Javascript 在jQuery中测试一段时间后是否发生了事件

Javascript 在jQuery中测试一段时间后是否发生了事件,javascript,jquery,xforms,Javascript,Jquery,Xforms,我正在为form faces xforms产品编写一个脚本,该产品通过内置于form faces中的事件进行键控。该事件称为“xforms就绪”。我已将“startTime”定义为文档处于“就绪”状态时立即发生。我想让脚本做的是警告用户,“xforms就绪”发生之前的时间太长,比如说“startTime”已经过了6秒。当发生“xforms ready”事件时,我可以使用以下代码轻松地执行操作: new EventListener(document.documentElement, "xfor

我正在为form faces xforms产品编写一个脚本,该产品通过内置于form faces中的事件进行键控。该事件称为“xforms就绪”。我已将“startTime”定义为文档处于“就绪”状态时立即发生。我想让脚本做的是警告用户,“xforms就绪”发生之前的时间太长,比如说“startTime”已经过了6秒。当发生“xforms ready”事件时,我可以使用以下代码轻松地执行操作:

new EventListener(document.documentElement,
  "xforms-ready",
  "default",
  function() {
    var endTime = (new Date()).getTime();
  }
);
但是,该警告希望在定义“endTime”之前发生。所以我想我想要这样的东西:

If 6 seconds has passed since startTime and endTime is not yet defined do X
或者可能更有效:

If 6 seconds has passed since startTime and 'xforms-ready' has not yet happened do X

有人能推荐一种方法吗?

您可以使用
setTimeout
来实现这一点。(完成下面的示例。)在jQuery的
ready
处理程序中,通过
setTimeout
设置要在六秒钟内调用的函数,在xforms ready处理程序中,如果尚未调用,则通过
cleartimout
取消该函数

编辑完整的示例(而不是我前面的片段代码),假设xforms ready处理程序在jQuery
ready
处理程序中也可以:

jQuery.ready(function() {
    var xformsReadyTimer;

    xformsReadyTimer = setTimeout(function() {
        // Too long, show the warning
        xformsReadyTimer = undefined;
        alert("XForms is taking too long!");
    }, 6000);

    new EventListener(document.documentElement,
      "xforms-ready",
      "default",
      function() {
          if (xformsReadyTimer) {
              // Cancel the warning
              clearTimeout(xformsReadyTimer);
              xformsReadyTimer = undefined;
          }
      }
    );
});

(您可以考虑做那些命名函数,而不是为了简单起见,我使用了匿名的函数。)< /P>