Javascript 如何在函数调用之间进行超时?

Javascript 如何在函数调用之间进行超时?,javascript,function,greasemonkey,settimeout,Javascript,Function,Greasemonkey,Settimeout,我的代码运行良好,只是它可以同时打开所有链接。我想延期 这将同时打开所有(多个功能“打开”): waitForKeyElements ("input.submit[onclick*='Open']", clickOpenBtn); 但是我希望每个函数调用之间有一个延迟(clickOpenBtn) 我的完整代码片段: setTimeout(CheckForZero, 30000); // OR just call CheckForZero() if you don't need to defer

我的代码运行良好,只是它可以同时打开所有链接。我想延期

这将同时打开所有(多个功能“打开”):

waitForKeyElements ("input.submit[onclick*='Open']", clickOpenBtn);
但是我希望每个函数调用之间有一个延迟(
clickOpenBtn

我的完整代码片段:

setTimeout(CheckForZero, 30000); // OR just call CheckForZero() if you don't need to defer until processing is complete
function CheckForZero() {
    waitForKeyElements ("input.submit[onclick*='Open']", clickOpenBtn);
    setTimeout(CheckForZero, 30000);
}

function clickOpenBtn (jNode) {
    triggerMouseEvent (jNode[0], "click");
}

function triggerMouseEvent (node, eventType) {
    var clickEvent = document.createEvent ('MouseEvents');
    clickEvent.initEvent (eventType, true, true);
    node.dispatchEvent (clickEvent);
}


我能做什么?

您应该更具体地说明WaitForkEyelments中使用的选择器,类似于所有链接的父节点。这样actionFunction将执行一次,然后您可以执行:

waitForKeyElements ("...", function (p) {
    $("input.submit[onclick*='Open']", p).each(clickOpenBtn);
});

function clickOpenBtn (index, jNode) {
    setTimeout(function () {
        triggerMouseEvent (jNode[0], "click");
    }, 1000 * index);
}

在这种情况下,将节点推入FIFO队列,并使用
setInterval
,而不是
setTimeout
来处理队列。代码变为:

var nodesToClick=[];//--此数组将保存FIFO队列。
WaitForkEyements(“input.submit[onclick*='Open']”,loadNodeQueue);
函数loadNodeQueue(jNode){
nodesToClick.push(jNode[0]);/--添加到末尾
}
var nodeClkInterval=setInterval(workNodeQueue,30000);
函数workNodeQueue(){
if(nodesToClick.length){
var node=nodesToClick.shift();//--从头开始删除
triggerMouseEvent(节点“单击”);
}
}
函数triggerMouseEvent(节点,事件类型){
var clickEvent=document.createEvent('MouseEvents');
单击event.initEvent(eventType,true,true);
node.dispatchEvent(点击事件);
}

这有3个问题:(1)在填充父节点之前可能会找到它。(2) 在第一批之后将找不到后续输入。(3) 发送到
triggerMouseEvent
的类型参数错误。谢谢@BrockAdams。修正了类型参数。其他的“问题”可能是需要的。谢谢。有疑问,但万一是+1。我需要+1你的答案。