Javascript 在关闭之前强制执行行

Javascript 在关闭之前强制执行行,javascript,closures,Javascript,Closures,我有以下代码 (function() { var weather = new Weather(); var input = document.getElementById("inputCity"); var weatherHolder = document.getElementsByClassName("weather"); var loading = document.getElementById("loadingSign"); input.focus

我有以下代码

(function() {
    var weather = new Weather();
    var input = document.getElementById("inputCity");
    var weatherHolder = document.getElementsByClassName("weather");
    var loading = document.getElementById("loadingSign");

    input.focus();

    input.onkeyup = function(e) { 
        if (e.keyCode == 13 && input.value != "") {
            loading.classList.remove("hidden");
            weather.getWeather(input.value, function (returnValue) {
                for (iter in returnValue) {
                    weatherHolder[iter].classList.remove('hidden');
                    document.getElementById("weather" + (parseInt(iter) + 1)).innerHTML = returnValue[iter].date; 
                }
            });
            loading.classList.add("hidden");
        }
    };
})();
我想强制执行行
load.classList.remove(“hidden”)在等待关闭波纹管完成之前

如果我删除了闭包行,脚本就可以完美地工作,但是,如果闭包失败,我就无法让它工作

例如,下面的代码可以完美地工作:

(function() {
    var weather = new Weather();
    var input = document.getElementById("inputCity");
    var weatherHolder = document.getElementsByClassName("weather");
    var loading = document.getElementById("loadingSign");

    input.focus();

    input.onkeyup = function(e) { 
        if (e.keyCode == 13 && input.value != "") {
            loading.classList.remove("hidden");
            alert("teste");
            loading.classList.add("hidden");
        }
    };
})();

问题出在
load.classList.remove(“hidden”)行中。这应该删除隐藏消息和微调器的类。如果我用微调器显示的警报替换闭合线,但是,如果我有该闭合函数,微调器将永远不会显示


我如何才能强制调用该行来判断闭包是否成功?

我不太理解这个问题,但从您的代码来看,添加
loading.classList.add(“hidden”)在回调中,以便正确执行它

(function() {
    var weather = new Weather();
    var input = document.getElementById("inputCity");
    var weatherHolder = document.getElementsByClassName("weather");
    var loading = document.getElementById("loadingSign");

    input.focus();

    input.onkeyup = function(e) { 
        if (e.keyCode == 13 && input.value != "") {
            loading.classList.remove("hidden");
            weather.getWeather(input.value, function (returnValue) {
                for (iter in returnValue) {
                    weatherHolder[iter].classList.remove('hidden');
                    document.getElementById("weather" + (parseInt(iter) + 1)).innerHTML = returnValue[iter].date; 
                }
                // Here
                loading.classList.add("hidden");
            });
        }
    };
})();

好的,那么你要求“强制执行…”但事实上,我怀疑这里发生的是:我们移动的行不是“等待”getWeather完成。

问题在于行
加载.classList.remove(“隐藏”)。这应该删除隐藏消息和微调器的类。如果我用微调器显示的警报替换关闭行,但是,如果我有关闭函数,微调器将永远不会显示工作得很好,我想删除隐藏的类,正如我在上面的评论中所说的那样。它不应该依赖于关闭来工作,对吗?