我有一个用NW创建的应用程序?js工作正常。
但是,它会进行大量处理(加载,保存文件,重新加载和处理......)所有这些都是由函数完成的。
虽然我看到它正在做某事(因为当我点击执行该功能的“按钮”时,按钮仍然“点击”直到完成),似乎不可能得到一个微调器。
我有2个函数用于分别显示和隐藏微调器,但是当我在函数的开始和结束时使用它们时,它们几乎立即被执行(正常显示,但不是敌人隐藏)我可以'找到原因
我知道如何在我的功能仍在处理并在完成后隐藏它时如何拥有一个微调器?
谢谢
答案 0 :(得分:0)
在JavaScript中,函数无法“休眠”,所有代码都会在没有任何停止的情况下执行,它们会立即返回。如果要延迟函数的执行,则需要回调:
var button = document.getElementById("button");
var spinner = document.getElementById("spinner");
button.onclick = function () {
startSpinning();
button.setAttribute("disabled", "disabled");
doSomethingTimeConsumingThen(function () {
button.removeAttribute("disabled");
stopSpinning();
});
}
function doSomethingTimeConsumingThen (onDone) {
setTimeout(onDone, 1000);
}
function startSpinning () {
spinner.innerHTML = "Spinning...";
}
function stopSpinning () {
spinner.innerHTML = "Not spinning.";
}
<button id="button">Do something time consuming</button>
<div id="spinner">Not spinning.</div>
当发生某些事情时调用回调,例如,当执行耗时的任务时。在上面的代码片段中,回调是:
function () {
button.removeAttribute("disabled");
stopSpinning();
}
您的API必须有类似内容。