gpt4 book ai didi

javascript - waitForKeyElements.js 但有最长等待时间

转载 作者:行者123 更新时间:2023-11-30 14:08:05 26 4
gpt4 key购买 nike

使用 waitForKeyElement.js 时我想知道是否有一个很好的解决方案来实现最长等待时间?有时我有一些应该存在的元素,但有时在糟糕的 ajax 响应中它们不会出现,或者它们可能需要一段时间才能出现。在这种情况下,我只是希望它继续运行并执行一个单独的功能。

编辑:例如,当试图“购买”一个项目时,它通常总是以一个“成功”框作为响应,这是程序正在等待的,但是有时如果服务器有错误或者如果该项目不再可用于“购买”,在这种情况下,可能会插入一个不同的错误元素,但这是一个不同的元素,因此它继续等待而不是继续处理下一个项目。

最佳答案

该问题没有示例用例,也没有 MCVE。很有可能是 XY Problem .

也就是说,没有优雅的方法来设置最长等待时间(因为以前从来没有这种需求,也没有这种需求)

您可以使用如下代码获得效果:

const maxTime       = 5;  //  seconds
var watchdogTimer = setTimeout (fallBackFunc, maxTime * 1000);
waitForKeyElements ("#foo", desiredFunc, true);

function desiredFunc (jNode) {
console.log ("Foo found!");
clearTimeout (watchdogTimer);
}
function fallBackFunc () {
console.log ("Oh, poo. No foo.");
}



在这种情况下卸载 waitForKeyElements 计时器应该是不必要的,但您也可以通过在 fallBackFunc() 的末尾添加以下代码来做到这一点>:

function fallBackFunc () {
console.log ("Oh, poo. No foo.");

/*-- Optional body double to take fire from waitForKeyElements that the
has `true` parameter set. This is almost never needed.
*/
var nonce = "IdeallySomeGloballyUniqueStringThatIs_a_ValidCssClass";
//-- Added node should have properties that match the WFKE selector
$("body").append (`<span id="foo" class="${nonce}" style="display:none;">blah</span>`);
setTimeout (function () {$(`.${nonce}`).remove(); }, 333); // time must be > 300
}


关于问题编辑:

... (the page) responds with a "success" box which is what the program is waiting for, however sometimes this box does not happen... in which case a different error element may be inserted instead...

通常的做法是设置 waitForKeyElements 来监听成功节点和错误节点。 (参见 jQuery selectors doc。)

waitForKeyElementscallback 然后会根据传递给它的节点类型采取适当的操作。
不需要看门狗定时器(除非页面可以保持事件状态但不返回任何节点类型——这几乎永远不会是这种情况)。

例如:

waitForKeyElements ("#goodNode, #errorNode", completeTransaction, true);

function completeTransaction (jNode) {
if (jNode.is ("#goodNode") ) { // Match one of the WFKE selectores
console.log ("Transaction success!");
}
else {
console.log ("Transaction error.");
}
}

作为奖励,这种方法:(A) 不必等待最大计时器用完,并且 (B) 如果最大计时器没有针对每种情况设置足够长,则不会中断。

关于javascript - waitForKeyElements.js 但有最长等待时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54995070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com