Ich habe im vorherigen Code einige Änderungen vorgenommen und weitere Tests ausgeführt, und ich habe das gleiche Problem erneut (Is it possible continue a stopped async function?). Also diese Frage ist verwandt.Ist es möglich, eine angehaltene Async-Funktion fortzusetzen? (2)
Darüber hinaus funktioniert die vorherige Lösung nicht.
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>
Ich bin nicht sicher, ob Sie verspricht oder 'async await' verstehen. Der von Ihnen gepostete Code könnte mit 'setTimeout' oder' setInterval' viel einfacher erledigt werden. Wenn Sie lange laufenden Code haben, der Ihre Benutzeroberfläche blockiert, sollten Sie Web-Worker verwenden. Info über warum und wie man verspricht: https://stackoverflow.com/a/47678417/1641941 – HMR