В зависимости от вашей конечной цели, я уверен, что есть лучший способ сделать это.Но ради этого:
Вы можете создать метод, который возвращает обещание, которое разрешается, когда происходит щелчок.Затем вы можете использовать async
/ await
, чтобы сделать то, что вам нужно.
Используя Promise
и await
на нем, вы можете технически «приостановить» цикл for
до чего-тослучается.В этом случае щелкните.
Помните, что метод, заключающий в себе цикл for
, должен быть async
.
function getClick() {
return new Promise(acc => {
function handleClick() {
document.removeEventListener('click', handleClick);
acc();
}
document.addEventListener('click', handleClick);
});
}
async function main() {
for (let i=0;i<4;i++) {
console.log("waiting for a click", i);
await getClick();
console.log("click received", i);
}
console.log("done");
}
main();
Попробуйте это в этом plunkr .