Underscore.js デバウンスを使用してサイトの別のタブにジャンプするときに clearInterval を実行する必要がないように、setInterval タスクを書き直しています。
エラーが発生し続けます_.debounce is not a function
。
これは、以下の私の元の作業コードです。基本的には、タブが「pano」のとき、50msごとにカメラの角度を変えるこの機能を実行します。「パノラマ」タブを再度クリックすると、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();
}
);
基本的にクリック リスナーを設定して、ユーザーがボタンをクリックするとデバウンス機能が実行されるようにします。また、クリック リスナーが機能しているかどうかを確認するために追加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, _){