mic*_*ael 3 javascript underscore.js
我想为每个调用特定页面的渲染函数去抖 - 渲染不同的页面将单独去抖。memoize 函数应该可以解决问题,但它无法正常工作。
var renderPage_underscore = function(pageNo){
var debouncer = _.memoize(
// memoize function
_.debounce(
// debounced function
function () {
// Do renderPage() work here
document.getElementById("underscore").innerHTML +=
'<br />' + pageNo + '@' + new Date().getTime();
},
1000, // delay
true
),
// memoize hash function
function (pageNo) {
return pageNo;
}
);
return debouncer(pageNo);
};
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?http://jsfiddle.net/Zq8Wd/1/
使用这种方式的问题_.memoize()是它缓存返回值,而不是副作用。如果你想用它_.memoize()来解决这个问题,你可能必须这样做:
rp = _.memoize(function (pageNo) {
return _.debounce(function () {
document.getElementById("underscore").innerHTML +=
'<br />' + pageNo + '@' + new Date().getTime();
}, 1000, true);
});
rp(1)();
rp(2)();
Run Code Online (Sandbox Code Playgroud)
更新了JSFiddle。