【发布时间】:2019-11-18 00:50:32
【问题描述】:
我有一个在 JS 函数中运行的 CPU 密集型操作。为了向用户指示它何时开始和停止,我试图显示一个徽章。代码如下所示:
function updateView() {
console.log(1)
document.getElementById('app-status').className = "badge badge-danger";
document.getElementById('app-status').textContent = "Processing";
console.log(2)
setTimeout(myUpdateView(), 0)
console.log(5)
document.getElementById('app-status').className = "badge badge-success";
document.getElementById('app-status').textContent = "Ready"; console.log(6)
}
function myUpdateView() {
console.log(3)
updateFlightParameters();
// Get departure airport.
var departureAirportICAO = $("#DEPARTURE_AIRPORT").val();
if (airports[departureAirportICAO] === undefined) {
alert("Departure airport is incorrect.");
} else {
departureAirport = airports[departureAirportICAO];
}
// Get arrival airport.
var arrivalAirportICAO = $("#ARRIVAL_AIRPORT").val();
if (airports[arrivalAirportICAO] === undefined) {
alert("Arrival airport is incorrect.");
} else {
arrivalAirport = airports[arrivalAirportICAO];
}
// Create waypoints.
createWaypoint(departureAirport);
createWaypoint(arrivalAirport);
// Create path. THIS FUNCTION CALLS SOME OTHER ASYNC FUNCTIONS.
generatePolylines(flightWaypoints);
console.log(4)
}
问题是app-status 元素永远不会改变它的颜色或文本。单击调用updateView() 的按钮后,页面会挂起(进行处理)而不更改元素。
【问题讨论】:
-
如果你这样做了
setTimeout(doHeavyProcessing,100) -
setTimeout( doHeavyProcessing, 0)也可以使用 -
能否验证控件是否从doHeavyProcessing方法返回?
-
@ArslanIqbal 我已经更新了我的代码。
标签: javascript html css bootstrap-4