Есть кнопка, при нажатии на которую выполняется функция через setTimeout(f, 250);
Но если нажать быстро на кнопку много раз, запуститься одновременно много функций
Вопрос: можно ли сделать так, что бы при многкратном нажатии функция не выполнялась до тех пор, пока не закончит выполнение предыдущая функция
var timer = null;
function clickHandler() {
if (!timer) {
timer = setTimeout(function() {
f();
timer = null;
}, 250);
}
}
Да, очередь из функций проще всего сделать цепочкой обещаний:
let lastDeferr,
count=0
$('button').click(()=>{
//создаём новое обещание
let promise=new $.Deferred(),
//устанавливаем функцию-обработчик
fn=()=>{
setTimeout(()=>{
console.log('You click button '+(++count)+' times')
promise.resolve()
},1000)
return promise
}
//создаём новую цепочку или продолжаем уже имеющуюся
lastDeferr?lastDeferr.then(fn):fn()
//запоминаем последнее звено цепочки обещаний
lastDeferr=promise
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>This is button</button>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Подскажите есть ли в sql команда вернет порядковый номер нужной строки из всего запроса?