我有一个使用Flask构建的网页,其中提供了我的python代码,还有一个使用HTML和JavaScript的模板/网页。我目前有一个带有按钮的简单网页。当用户单击按钮时,它将调用JavaScript函数。该功能执行一些需要一些时间的任务。在执行功能期间,将使用有关发生的事件的更新来更新文本区域。然后函数完成执行。
但是,仅在JavaScript函数内的这些消息在函数完全完成执行后才同时显示。也就是说,在Javascript函数完成之前,我无法更新页面上的任何HTML对象。如何实时更新HTML对象,以便用户可以获取有关执行此较长功能时发生的情况的信息?
一些示例代码。我的index.html
看起来像这样:
script type="text/javascript">
function executeCode() {
document.getElementById("outputLog").innerHTML += "<br>Beginning the function";
** do some time consuming stuff **
document.getElementById("outputLog").innerHTML += "<br>Almost done";
** do some more stuff **
document.getElementById("outputLog").innerHTML += "<br>Done!";
}
...
<button onclick="executeCode()">Press Me!</button>
<p id="outputLog"></p>
但是,在调用函数时,滞后时间等于整个函数执行时间的长度,在此之后,所有三个消息同时以文本块的形式出现。我需要做些什么才能在功能运行时允许用户实时更新?
答案 0 :(得分:1)
在javascript中使用promise对象。
var promise1 = new Promise(function(resolve, reject) {
resolve('Success!');
});
promise1.then(function(value) {
console.log(value);
// expected output: "Success!"
});
通常使用ajaxfunction.then(funciton4success(),funciton4failer())
或者您可以使用var promiseallobj = new promiseAll(ajaxfunction1,ajaxfunction2,...)
promiseallobj.then(successcallbackfunction(),failurecallbackfunction())
更多检查链接-https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises