我正在重写我的setInterval任务,以便当我使用Underscore.js去抖动跳转到我网站上的其他标签时,我不再需要clearInterval。
我不断收到错误_.debounce is not a function
。
这是我原来的工作代码。基本上,当标签是'全景'时,我运行这个功能,每50ms改变一次摄像机角度。当我在'pano'选项卡上单击时,clearInterval将重置计时器。
clearInterval(timerID);
if (target == 'pano') {
initialize();
timerID = setInterval(function(){
if (!hovering && !moved) {
panoOptions.pov.heading += .5;
panoOptions.pov.heading = wrapAngle(panoOptions.pov.heading);
panorama.setOptions(panoOptions);
}
},50);
initialize();
}
当我尝试重构我的代码以使用._debounce
(http://underscorejs.org/#debounce)时,我收到错误,如果我的方法是正确的,我就不会。
timerID = _.debounce(function(){
if (!hovering && !moved) {
panoOptions.pov.heading += .5;
panoOptions.pov.heading = wrapAngle(panoOptions.pov.heading);
panorama.setOptions(panoOptions);
}
},50);
$("#pano_toggle").click(
function(){
console.log("CLICKED");
timerID();
}
);
我基本上设置了一个点击监听器,这样当用户点击按钮时,debounce功能就会开始运行。我还添加了console.log("CLICKED")
以查看我的点击监听器是否正常工作,但它没有取消点击。
关于我的逻辑失败的任何提示?
编辑:
我确保要求Underscore.js:
require(["require",
"jquery",
"underscore",
"lib/jquery/jquery.galleria",
"gmaps!",
"//assets.pinterest.com/js/pinit.js",
"twitter_bootstrap/bootstrap-dropdown"], function(require, _){
答案 0 :(得分:3)
您的require语法不正确。模块按照它们在第一个数组中列出的顺序作为参数传递给您的函数。所以看起来应该是这样的:
require([
"require",
"jquery",
"underscore",
"lib/jquery/jquery.galleria",
"gmaps!",
"//assets.pinterest.com/js/pinit.js",
"twitter_bootstrap/bootstrap-dropdown"
], function(require, $, _, galleria, ...){
/* .... */
});
虽然,您不需要 require 本身。