在完成函数执行之前,如何获取JavaScript输出消息?

时间:2019-07-12 05:22:19

标签: javascript flask

我有一个使用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>

但是,在调用函数时,滞后时间等于整个函数执行时间的长度,在此之后,所有三个消息同时以文本块的形式出现。我需要做些什么才能在功能运行时允许用户实时更新?

1 个答案:

答案 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