jjzjj

Debouncing

全部标签

javascript - 在 React 事件中使用 debouncer

我有一个需要去抖动的字段的onchange事件,我为此使用下划线,但是当我使用去抖动器时,传递给React处理程序的事件似乎是过时了。WebsiteLinkuriChangeHandler(event){event.preventDefault();leturiField=$(event.target);leturi=uriField.val();this.setState({itemCreateError:null,loading:true});this.loadUriMetaData(uri,uriField);}我收到这个错误:警告:出于性能原因,此合成事件被重用。如果您看到这一

javascript - 使用 debounce 监听多个范围的值变化

目前,我使用下面的代码来监听Sheet1!A1:B2的变化:functionaddEventHandler(){Office.context.document.bindings.addFromNamedItemAsync("Sheet1!A1:B2","matrix",{id:"myBind"},function(asyncResult){Office.select("binding#myBind").addHandlerAsync(Office.EventType.BindingDataChanged,onBindingDataChanged2016);})}functiononBi

javascript - 如何使用 jQuery/javascript 将事件处理限制为每 X 秒一次?

对于快速触发的keypress事件,我想将事件的处理限制为每X秒最多一次。我已经在使用jQuery进行事件处理,所以基于jQuery的解决方案是首选,尽管vanillaJavascript也很好。Thisjsfiddle显示按键快速触发,对操作没有任何限制Thisjsfiddle使用setTimeout()在vanillaJS中将处理限制为每0.5秒一次我的问题是jQuery是否有内置的方法来执行此操作?我在.on()docs中没有看到任何内容如果不是,是否有比我在secondjsfiddleexample中使用的更好的模式在vanillaJS中执行此操作??

javascript - 在 debounce 函数中使用 requestAnimationFrame 是个好主意吗?

这是对我对requestAnimationFrame理解的检查。我需要debounce功能,因为每次调整窗口大小时我都在做一些DOM交互,我不想让浏览器过载。典型的去抖动函数每个时间间隔只会调用一次传递的函数;间隔通常是第二个参数。我假设对于很多UI工作,最佳间隔是不会使浏览器过载的最短时间量。在我看来,这正是requestAnimationFrame会做的事情:vardebounce=function(func,execAsap){vartimeout;returnfunctiondebounced(){varobj=this,args=arguments;functiondelay

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

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

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 - 限制 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
12