jjzjj

debouncing

全部标签

javascript - Lodash _.debounce 具有用于独特参数变体的单独队列

我非常感谢lodash的去抖动和节流功能。我相信我很了解用例并且已经实现了数十次。但是,根据要求,带有参数的_.debounce函数可能会出现重大且难以捕获的错误。即:假设您有一个名为debounceFn的去抖动函数,它接受一个参数并且去抖动间隔为1000毫秒。100毫秒:debounceFn(1)200毫秒:debounceFn(2)300毫秒:debounceFn(2)400毫秒:debounceFn(1)500毫秒:debounceFn(1)子函数最终将以参数1调用。这对于您只关心最后一个值的调整大小事件非常有用,但是如果您需要根据参数单独的去抖动队列怎么办?也就是说,不是使用参

javascript - Rx debounce operator with first 和 last

是否有任何rx运算符的组合以获得第一个和最后一个去抖动事件?这将用于主细节场景(甚至是搜索场景),在这些场景中,我们希望在用户停止更改选择后立即加载第一个选定项目和最后一个选定项目。这将防止在用户缓慢导航时注入(inject)去抖动时间,同时也防止突发变化。如果debounce运算符(operator)有一个“立即”选项,如underscore.jsdebouncefunctoin然后合并2个版本的debounce运算符将生成所需的结果。 最佳答案 要获得第一个去抖动的元素,您可以使用throttle.要获得最后一个,您可以使用de

javascript - 如何使用 async/await 去抖动?

我有一个输入框。在用户停止输入后,我想执行一个HTTP请求并等待结果。Here'sajsbin由于jsbin不允许网络请求,因此我使用setTimeout()代替。varlog=console.log.bind(console)vardelayedResults=newPromise(function(resolve){setTimeout(function(){resolve('WoooIamtheresult!')},3000);});document.querySelector('input').addEventListener('input',_.debounce(asyncf

javascript - throttle 和去抖功能

我对throttle和去抖函数的概念有点不确定。据我了解:我们去抖动一个应该在特定事件发生后调用的函数。它用于拖动、按键等事件,目的是在事件被触发时不一直触发,而是在一系列事件完成时触发。通常在键入整个单词后,或者在拖动或调整大小序列结束后。我们限制一个应该在一系列事件发生时触发的函数,但是当我们想要控制它被调用的次数时。就像在拖动运动中一样,我们希望仅在每x个像素距离或仅每100毫秒调用该函数,而不是每次触发事件时调用该函数。因此,在一系列事件发生时会调用throttle函数,只是调用次数更少。问题:这是对这些功能及其用途的正确理解吗?还有其他区别它们的特征吗?

go - 我如何等待 channel 事件的间歇来触发某些事情?

我有一个channel,它将接收对它的突发写入。我想等到channel上的突发发送完成后再触发操作。我看过这个gist,但是,如果缓冲区中有数据,它将每隔interval发送一次输出:funcdebounceChannel(intervaltime.Duration,outputchanint)chanint{input:=make(chanint)gofunc(){varbufferintvarokbool//Wedonotstartwaitingforintervaluntilcalledatleastoncebuffer,ok=在我的例子中,我想等到输入channel上不再有任何

javascript - 如何正确使用带有 lodash debounce 的 Vue JS watch

我正在使用lodash在组件上调用去抖功能,如下所示:...import_from'lodash';exportdefault{store,data:()=>{return{foo:"",}},watch:{searchStr:_.debounce(this.default.methods.checkSearchStr(str),100)},methods:{checkSearchStr(string){console.log(this.foo)//问题1是我的方法checkSearchStr不知道foo问题2是我的商店也是undefined为什么我的方法在通过_.debounce调用

javascript - 限制 JavaScript 函数调用,但要排队(不要丢弃调用)

函数如何对其调用进行速率限制?如果调用过于频繁,则不应丢弃调用,而应及时排队并间隔X毫秒。我看过throttle和debounce,但它们会丢弃调用而不是将它们排队等待将来运行。有什么比在X毫秒间隔内设置process()方法的队列更好的解决方案?JS框架中有这样的标准实现吗?我看过underscore.js到目前为止-没有。 最佳答案 没有库应该很简单:varstack=[],timer=null;functionprocess(){varitem=stack.shift();//processif(stack.length===

javascript - 使用 Jasmine 在 AngularJS 中测试去抖函数永远不会调用该函数

我在使用下划线去抖动的服务中有一个方法。在该方法内部是对不同服务上的方法的调用。我正在尝试测试是否调用了不同的服务。在我尝试测试去抖动方法时,从未调用过不同服务的方法,Jasmine失败了:“预期spyaMethod已被调用。”我知道它被调用的事实(它在chrome中记录到控制台),它只是在预期已经失败之后被调用。所以...(最好)不添加Sinon或其他依赖项并使用给予解决方案的奖励积分*不必将_.debounce变成$timeout...怎么办?angular.module('derp',[]).service('herp',function(){return{aMethod:fun

javascript - 如果再次调用 Javascript 函数,如何终止它?

我的网页上有一个搜索框,其中包含复选框,以便用户过滤他们的结果。一次只能选中一个复选框。单击复选框时,我的代码运行并将过滤器应用于列表并返回正确的结果。我遇到的问题是,当快速连续多次单击复选框时,它会将请求排队并一个一个地拉回。如果选中复选框然后多次取消选中,这可能需要一段时间。在Javascript中有什么方法可以通知函数它已被再次调用并且它应该停止除最后一次请求之外的所有内容? 最佳答案 您想将onclick回调包装在一个去抖动函数中,例如http://underscorejs.org/#debounce假设你有这个functi

javascript - Lodash debounce 在 React 中不起作用

最好先看看我的代码:importReact,{Component}from'react';import_from'lodash';importServicesfrom'Services';//WebservicecallsexportdefaultclasscomponentNameextendsComponent{constructor(props){super(props);this.state={value:this.props.value||null}}onChange(value){this.setState({value});//Thisdoesn'tcallService