如何让程序等待按钮单击以转到方法中的下一个循环迭代? [JavaScript]
How do I make the program wait for a button click to go to the next loop iteration in a method? [JavaScript]
我制作了一个包含许多循环的算法,我正尝试通过单击按钮逐步完成它。我需要能够在我第一次单击按钮时只执行一次循环迭代,然后在我再次单击它时执行下一次迭代,依此类推,直到程序完成。我可以使用 JavaScript 完成吗?如果可以,怎么做?
一个干净简单的方法是使用 Promises,并使用 async / await。
基本上让您的按钮点击进入您的等待函数可以通过的承诺解析器。
示例如下。
let waitForPressResolve;
function waitForPress() {
return new Promise(resolve => waitForPressResolve = resolve);
}
const btn = document.querySelector('button');
function btnResolver() {
if (waitForPressResolve) waitForPressResolve();
}
async function doIt() {
btn.addEventListener('click', btnResolver);
for (let c = 1; c < 10; c += 1) {
console.log(c);
await waitForPress();
}
btn.removeEventListener('click', btnResolver);
console.log('Finished');
}
doIt();
<button>Do Next</button>
我制作了一个包含许多循环的算法,我正尝试通过单击按钮逐步完成它。我需要能够在我第一次单击按钮时只执行一次循环迭代,然后在我再次单击它时执行下一次迭代,依此类推,直到程序完成。我可以使用 JavaScript 完成吗?如果可以,怎么做?
一个干净简单的方法是使用 Promises,并使用 async / await。
基本上让您的按钮点击进入您的等待函数可以通过的承诺解析器。
示例如下。
let waitForPressResolve;
function waitForPress() {
return new Promise(resolve => waitForPressResolve = resolve);
}
const btn = document.querySelector('button');
function btnResolver() {
if (waitForPressResolve) waitForPressResolve();
}
async function doIt() {
btn.addEventListener('click', btnResolver);
for (let c = 1; c < 10; c += 1) {
console.log(c);
await waitForPress();
}
btn.removeEventListener('click', btnResolver);
console.log('Finished');
}
doIt();
<button>Do Next</button>