const asyncMethod = async () => {
const data = await fetchData()
return data.map(parseResponse)
})
const a = _.debounce(asyncMethod, 0, { leading: true })
您可以调用a.cancel()
并停止异步方法吗?
答案 0 :(得分:1)
直接从documentation:
创建一个防反跳功能,将调用func延迟到之后 自上次反跳以来等待的毫秒数已过去 函数被调用。防反跳功能带有取消 取消延迟的函数调用的方法和刷新方法 立即调用它们。提供选项以指示是否func 应该在等待的前沿和/或后沿调用 暂停。将使用提供给的最后一个参数来调用func。 去抖动功能。后续对反跳功能的调用返回 最后一次func调用的结果。
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>
现在,如果异步功能即将执行,您将无能为力。