Прямо из документации :
Создает отклоненную функцию, которая задерживает вызов func до истечения миллисекунд ожидания с момента последнего вызова этой функции.Отклоненная функция поставляется с методом cancel для отмены отложенных вызовов func и методом flush для немедленного их вызова.Предоставьте опции, чтобы указать, должен ли func вызываться на переднем и / или заднем фронте времени ожидания.Функция вызывается с последними аргументами, предоставленными для функции debounce.Последующие вызовы дебазированной функции возвращают результат последнего вызова функции.
const fn = () => console.log('foo')
const dFn = _.debounce(fn, 500)
dFn()
dFn.cancel() // Remove this to see it working and leave it to cancel
Давайте попробуем с setTimeout
:
const fn = () => setTimeout(function(){console.log('foo')}, 200)
const dFn = _.debounce(fn, 500)
dFn()
dFn.cancel() // Remove this to see it working and leave it to cancel
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
Теперь, если асинхронная функция достигла точки выполнения, вы ничего не можете сделать на самом деле.