_.debounce创建
一个函数,以对传递给它的函数进行去抖动。您的
s.search函数正在做的事情是
_.debounce每次
s.search都被再次调用。每次都会创建一个全新的功能,因此没有任何反跳现象。
因此,解决方案是删除箭头和多余的一对括号,并确保
s._makeSearchRequest在访问之前定义了该箭头:
s._makeSearchRequest = -> console.log("making search request")s.search = _.debounce( s._makeSearchRequest, 1000 )
示例(使用Javascript):
var s;s = {};s._makeSearchRequest = function(q) { return console.log("making search request: " + q);};s.search = _.debounce(s._makeSearchRequest, 1000);// call s.search three times in a rows.search(1);s.search(2);s.search(3);// call s.search after 500 mssetTimeout(s.search, 500, 4);// call s.search after 3 secondssetTimeout(s.search, 3000, 5);// timer to show passage of timevar i = 0;var t = setInterval(function () { i += 1; console.log(i + " seconds elapsed"); if (i > 5) { clearInterval(t); }}, 1000);<script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/3.5.0/lodash.min.js"></script>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)