javascript - 仅在长函数完成后由 JS 更新的 HTML 元素,即使放在之前
问题描述
问题如下:我想修改一个 h1(id="waiting"),然后执行一个需要几秒钟才能完成的函数(解决)。
function solveWrapper(table) {
document.getElementById("waiting").innerHTML = "Wait please, Nurikabe is being solved...";
alert("alert");
var currentState = new State(table);
solve(table, currentState);
}
使用此代码,我在调用求解函数之前收到警报,但仅在该函数执行完成后才修改 h1 标记。有谁知道如何解决这一问题?这是调用solveWrapper的按钮:
<button onclick="solveWrapper(grid);">Solve</button>
这是整个代码:https ://github.com/jackowski626/projects/blob/master/Nurikabe_SJ_Solver.html
解决方案
将调用放入solve()
超时处理程序中:
function solveWrapper(table) {
document.getElementById("waiting").innerHTML = "Wait please, Nurikabe is being solved...";
var currentState = new State(table);
setTimeout(function() {
solve(table, currentState);
}, 10);
}
浏览器推迟更新视图直到事件循环完成,除非他们别无选择。
推荐阅读
- sql-server - 将一列中的记录拆分为多列
- hyperledger-fabric - 在频道中加入新组织。Hyperledger Fabric Node-sdk
- sql - 仅从数据库中提取时间,其中时间与gridview中的日期一起保存
- php - CRUD 帮助 laravel 5.8 用户
- javascript - 如何动态地将 id 添加到表行中,以便可以唯一标识它们
- q# - 如何修复“[警告] 可调用的 Microsoft.Quantum.Canon.InverseMod 已被弃用。” Q# 中的警告?
- php - htaccess url重写2获取值
- angular - 如何从“组件”类返回值?
- java - Android Studio 的运行时(运行任务)错误日志
- ios - 如何使用 multipeerConnectivity 断开所有对等点?