可以用lodash的反跳取消异步功能吗?

时间:2018-11-28 17:20:49

标签: javascript lodash

const asyncMethod = async () => {
    const data = await fetchData()
    return data.map(parseResponse)
})

const a = _.debounce(asyncMethod, 0, { leading: true })

您可以调用a.cancel()并停止异步方法吗?

1 个答案:

答案 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>

现在,如果异步功能即将执行,您将无能为力。