gpt4 book ai didi

javascript - 我需要一个通用的 javascript "wait for function to be available"

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:27:28 25 4
gpt4 key购买 nike

我找到了这个优秀的片段 Make my userscript wait for other scripts to load这向我展示了如何在调用函数之前等待函数可用。

目前我的脚本中有这个本地代码,我把它放在一起对我有用

waitForFnc();

function waitForFnc() {
if (typeof Portal.Management_Init == "undefined") {
window.setTimeout(waitForFnc, 50);
}
else {
Portal.Management_Init();
}
}

但是,我想编写一个通用版本的“waitForFnc”,因为我需要在多个地方做同样的事情。有点像

waitForFnc(Portal.Management_Init);

function waitForFnc(fnc) {
if (typeof fnc == "undefined") {
window.setTimeout(waitForFnc(fnc), 50);
}
else {
fnc();
}
}

我在其中传递可用时调用的函数的名称。上面的代码不起作用,但我不确定如何解决它。

问候保罗

最佳答案

您尝试执行的操作存在一些潜在问题。如果您甚至在定义 Portal 之前调用 waitForFnc(),您将得到一个 null 属性访问异常。如果您正在尝试一个真正通用的解决方案,您可能必须使用 eval() *gasp*

当我们这样做的时候,让我们添加对将参数传递给我们正在等待的函数的支持。

function waitForFn(fnName, args){
var fn;
try{
eval("fn = " + fnName);
if(fn){
fn.apply(null, args);
}else{
setTimeout(function(){waitForFn(fnName, args);}, 50);
}
}catch(e){
setTimeout(function(){waitForFn(fnName, args);}, 50);
}
}

waitForFn("Portal.Management_Init", [arg0, arg1]);

关于javascript - 我需要一个通用的 javascript "wait for function to be available",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10328885/

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