Как остановить выполнение функции до нажатия кнопки?
На сайте есть обычная кнопка <button>. Я хочу, чтобы до нажатия кнопки выполнение функции остановилось, примерно так:
function doSomething(){ doSomeStuff(); //код, останавливающий выполнение до нажатия кнопки doSomeStuffAfter(); } Варианты с onclick мне не подходят, так как нужно продолжить выполнять код в этой же функции. Подозреваю, что промиcы могут помочь, но не знаю, как их правильно сделать, такой вариант не работает: async function function2(){ return new Promise((resolve, reject) => { document.getElementById('button-1').addEventListener('click', () => resolve()) }) } async function function1(){ await function2(); } |
Вполне себе работает(чуть поправил, но принципа это не меняет):
async function function2(id){ return new Promise((resolve) => document.getElementById(id).addEventListener('click', resolve, {once: true})) } async function doSomething(){ doSomeStuff(); await function2('button-1'); doSomeStuffAfter(); } |
Но второй раз это уже не сработает.
Промис уже будет в разрешенном состоянии Лучше так. function doSomething(){ doSomeStuff(); const waitClick = () => { doSomeStuffAfter(); document.getElementById('button-1').removeEventListener('click', waitClick) } document.getElementById('button-1').addEventListener('click', waitClick) } |
voraa, всмысле? function2 при вызове создаёт новый промис...
|
Цитата:
Но я не сторонник вешать промисы на такие события. Промис все-таки должен когда то разрешиться |
Часовой пояс GMT +3, время: 09:30. |