javascript setTimeout 无法识别函数参数

标签 javascript google-chrome settimeout

我正在编写一个 Google Chrome 扩展程序。我使用 setTimeout 来减慢对服务器的请求速度。但是 setTimeout 没有按预期工作。它返回一个错误,指出 reqUrl 未定义。

根据对 stackoverflow 上类似问题的回答,这似乎是一个超出范围的问题,我不明白如何解决它,除了使 reqUrl 成为一个全局变量,这似乎不是一个很好的解决方案。如果我删除括号,它就会失控,根本没有时间延迟。

如何让它发挥作用?

这是代码。我已经包含了 slowdow 函数,尽管我认为它不是问题的核心。

openDetailPg(profileLink[currentLink]); 
function openDetailPg(reqUrl)
{
    console.log('openDetailPg at '+reqUrl);
    setTimeout("createDetailWindow(reqUrl)",slowDown());
    ++sendCount;
    timeOfLastRequest=new Date().getTime();
};
function createDetailWindow(detailUrl)
{
    console.log('createDetailWindow');
    chrome.tabs.create({windowId: mainWindowId, url: detailUrl}, 
    function (tab)
    {
        console.log('    OpenDetailPg Created Tab '+tab.id+' with slow down of '+slowDown().toFixed(0));
        chrome.tabs.executeScript(tab.id, {file: 'profile.js'});
    })
};
function slowDown()
{
    //console.log('  Slowdown: last interval '+ (new Date().getTime()-timeOfLastRequest)+' milisec.')
    if (new Date().getTime()-timeOfLastRequest>minDelay)
    {
        console.log('  Previous Delay Greater Than Minimum Delay, Resetting Speed Count');
        sendCount=1; 
        timeOfFirstRequest=new Date().getTime(); //else forget about it, reset time of first request
    }
    elapsedTime=new Date().getTime()-timeOfFirstRequest;
    avgSpeed = elapsedTime/sendCount;
    //console.log("  Started @ "+timeOfFirstRequest+" Current time "+new Date().getTime()+" Avg time fr 1st HTTPRequest "+avgSpeed.toFixed(0)+' milisec over '+sendCount+' Req');
    if (avgSpeed<minDelay)
    {
        //console.log("  Delaying request by "+((minDelay-avgSpeed).toFixed(0))+" milisecs");
        return minDelay-avgSpeed;
    }
    else
    {
        //console.log('  No Delay on Request');
        return 1;
    }
};

最佳答案

setTimeout({functionname}, {timeout}, {param1}, {param2}...)

例子

setTimeout(callMe, 1000, 'say','hello');
function callMe(p1, p2){
alert(p1+" "+p2); //alerts say hello
}

关于javascript setTimeout 无法识别函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7432471/

相关文章:

javascript - Canvas 鼠标悬停

javascript - 在 JavaScript 中将日期时间字符串转换为 UTC

Chrome 中的 Javascript 错误 : Me, 我遗漏了什么或 Chrome 中的错误?

html - 网站不会在 chrome 中向下滚动,但在所有其他浏览器中都可以正常工作

javascript - 检测到 iFrame 已加载后或 3 秒超时后调用函数

javascript - 从我的本地主机获取数据并将其显示在屏幕上?

JavaScript 事件监听器内存泄漏

javascript - 为什么setTimeout调用的函数没有调用栈限制?

javascript - While 循环,增加变量在 settimeout 函数内部没有影响

javascript - js-美化案例标签的缩进