【发布时间】:2017-12-07 12:39:03
【问题描述】:
我对之前的代码进行了一些更改,运行了更多测试,但我又遇到了同样的问题 (Is it possible continue a stopped async function?)。所以这个问题是相关的。
另外,之前的解决方法也行不通。
var stop = false;
var pause = false;
var elParrafo = document.getElementById('miParrafo');
function sendPause() {
pause = true;
}
function sendContinue() {
pause = false;
}
function sendStop() {
stop = true;
}
function longWork(ms, char) {
return new Promise(function(resolve, reject) {
elParrafo.innerHTML += char;
setTimeout(resolve, ms);
});
}
async function doIt() {
for (var i = 0; i < 666; i++) {
if (!stop) {
if (!pause) {
await longWork(50," > ");
}
} else {
break;
}
}
}
doIt();
<form class="" action="index.html" method="post">
<input type="button" value="Pause" onclick="sendPause()">
<input type="button" value="Continue" onclick="sendContinue()">
<input type="button" value="Stop" onclick="sendStop()">
</form>
<p id="miParrafo"></p>
【问题讨论】:
-
我不确定你是否理解 Promise 或
async await。使用setTimeout或setInterval可以更简单地完成您发布的代码。如果你有长时间运行的代码会阻塞你的 UI,那么你应该使用网络工作者。关于为什么以及如何承诺的信息:stackoverflow.com/a/47678417/1641941
标签: javascript promise async-await