Javascript .innerHtml文本在脚本执行期间更新

Javascript .innerHtml文本在脚本执行期间更新,javascript,jquery,html,ajax,innerhtml,Javascript,Jquery,Html,Ajax,Innerhtml,我不明白为什么在javascript/jquery/ajax执行期间无法获得文本更新 我有以下代码 $("#updates").html("Collecting your team names."); YourTeamFirst(YourTeam, TeamValue); $("#updates").html("Collecting their team names."); TheirTeamNext(TheirTeam, TeamValue); $("#updates").html("Ga

我不明白为什么在javascript/jquery/ajax执行期间无法获得文本更新

我有以下代码

$("#updates").html("Collecting your team names.");
YourTeamFirst(YourTeam, TeamValue);

$("#updates").html("Collecting their team names.");
TheirTeamNext(TheirTeam, TeamValue);

$("#updates").html("Gathering ID's.");
setNames(TeamValue);

$("#updates").html("Setting Details.");
setChampRatios(TeamValue);

$("#updates").html("Setting Ratios.");
setChampKDRS(TeamValue);

$("#updates").html("Finished!");
i、 e

示例函数(出现的唯一ajax在子函数中,实际函数调用和文本更新在普通JS函数中,没有ajax…)

唯一出现的是“完成”(在脚本完成之后),为什么其他任何东西都不会出现?执行大约需要10秒钟,因此其他更新应该会在innerHtml/Html中弹出。我还尝试过使用
document.getElementById(“更新”).innerHTML=…
,它也不显示任何内容,那么当它完成时将显示“完成的”文本

每个函数要么是JQuery,Ajax,要么是javascript,还有一些来自我的C#控制器的来回函数,但是我觉得文本更新应该仍然在更新我的innerHtml文本,除非有一些我不知道的关于innerHtml/Html的脚本


另外:如果我在某个地方抛出一个
警报()
,就会出现最新的文本更新。那么,为什么只有警报中断或脚本执行结束才会更新/发布我的文本呢。我希望我的用户看到脚本中的更新消息。

因为ajax是同步执行的

如果您希望这样的文本出现,则需要在ajax函数中使用回调。

更新:因为您使用的是
async:false
这种行为看起来很奇怪,但我不知道javascript和jquery在您的情况下如何准确处理
同步调用

一个热修复建议是仍然向函数添加回调。(注意:这是一个非常混乱的解决方法,应该可以帮助您解决问题。)

然后在函数调用中添加匿名函数作为回调参数。在这些函数体中,始终为下一个要执行的函数添加
.html()

$("#updates").html("Collecting your team names.");

YourTeamFirst(YourTeam, TeamValue, function () {
    $("#updates").html("Collecting their team names.");
});

TheirTeamNext(TheirTeam, TeamValue, function () {
    $("#updates").html("Gathering ID's.");
});
/* ... */

我将所有ajax函数都设置为async:false。这些语句在ajax之外,ajax只会出现在上面显示的文本语句旁边的函数中,比如
setNames(TeamValue)函数中
(或者这不重要吗?。@Austin
我把我所有的ajax函数都设置为async:false
为什么你不质疑这个语句本身呢???@Austin没有看到更多的代码,我就不能再多说了。@A.Wolff因为我的文本更新不是在ajax函数中,而是在普通javascript函数中,这有关系吗?@Austin它与异步ajax有关系,因为一旦你在其中进行ajax调用,被调用的函数就被认为已经完成了。请发布一个完整的代码示例,这样我们就可以看到你所做的一切。很可能所有的.html()语句都在执行中,但速度太快,除了上次更新之外,什么都看不见。同样,没有代码,这是一张卡片,但既然你说警报工作,警报被阻止,那就是我的猜测。@j08691如果问题像“传播”,那么现在肯定需要10秒左右,正如我所做的第三方API调用一样,每次只需1-2秒,到目前为止,我正在做大约20次。在阻止浏览器的UI之前,您应该强制重新绘制UI,这意味着在
html()
方法调用和同步ajax调用之间。也就是说,这是一个非常不清楚的问题,你能不能试试:
$(“#更新”).html(“收集你的球队名称”).prop('offsetHeight');YourTeamFirst(YourTeam,TeamValue)等等?或者更好,为什么不改用异步ajax请求呢???@A.Wolff我试过了,但似乎不起作用。如果你去这里:我把它贴了。这是完成的第二个函数,称为verifyNames(哦,它不在playerViews中,仅供参考)
function YourTeamFirst(YourTeam, TeamValue, callback) {
    /* ... */
    $.ajax({
        /* ... */
        success: function (resp) {
            /* ... */
            callback();
        }
    });
}
$("#updates").html("Collecting your team names.");

YourTeamFirst(YourTeam, TeamValue, function () {
    $("#updates").html("Collecting their team names.");
});

TheirTeamNext(TheirTeam, TeamValue, function () {
    $("#updates").html("Gathering ID's.");
});
/* ... */