执行长任务时按钮保持单击状态

时间:2014-07-14 20:41:51

标签: javascript button settimeout

我正在使用像这样的按钮

<button id="my_Button"></button>

和状态消息

<span id="loading"></span>

单击按钮时,会调用处理程序

$(document).ready(function(){
    document.getElementById("iFFT_Button").addEventListener('click', myhandler);

然后处理函数是

function myhandler()
{
    $("#loading").html("performing calc");
    setTimeout(performLongCalculation(),0);
}

在performLongCalculation函数结束时,文本被清除,即$("#loading").html("");

问题是,在长时间计算过程中,按钮仍然被按下,并且跨度文本没有更新,踩着代码认为每件事情都运行正常,任何想法为什么不更新?我原以为单击处理程序会因为长计算的setTimeout函数而快速返回。

干杯

戴夫

2 个答案:

答案 0 :(得分:1)

也许在函数调用后删除括号会有所帮助。在你的情况下不应该需要它们。

function myhandler() {
    $("#loading").html("performing calc");
    setTimeout(performLongCalculation, 0);
}

答案 1 :(得分:0)

在匿名函数中包含对performLongCalculation的调用。

function myhandler()
{
    $("#loading").html("performing calc");
    setTimeout(function() { performLongCalculation() },0);
}

尝试将超时设置为4毫秒。

setTimeout(performLongCalculation(),4);

<强> https://developer.mozilla.org/en-US/docs/Web/API/Window.setTimeout