2014-06-19 4 views
1

Underscore.js 1.6.0을 사용하여 기능을 디버깅하려고 시도하지만 시간 초과 설정 후에 함수가 호출되지 않습니다. 나는 출력 div에서 정확히 하나의 "o"를 기대하지만 아무 것도 없다. _.debounce(echo, 200)_.debounce(echo(), 200)으로 변경하면 내가 원하는 것이 아닌 10 초가됩니다. Mac OS X의 Chrome 및 Firefox에서 같은 결과가 발생합니다.Underscore.js debounce

내가 뭘 잘못하고 있니? 잘못된 방법으로 _.debounce를 사용하고 있습니까?

작동 예제는 http://jsfiddle.net/YmSGL/을 참조하십시오.

function echo() { 
    var out = document.getElementById("out"); 
    out.innerHTML = out.innerHTML + "o";  
} 

for (var i = 0; i < 10; i++) { 
    var wait = Math.floor(Math.random() * 100); 
    setTimeout(function() { 
     console.log("Calling echo @" + _.now()); 
     _.debounce(echo, 200); 
    }, wait); 
} 
+4

'_.debounce' **는 ** 새로운 기능을 ** 반환합니다. 그것이 당신이 불러야하는 기능입니다. 설명서의 예제를 살펴보십시오. http://underscorejs.org/#debounce –

답변

1

펠릭스 클링 감사합니다! 다음 코드가 작동합니다.

function echo() { 
    var out = document.getElementById("out"); 
    out.innerHTML = out.innerHTML + "o";  
} 

var echo2 = _.debounce(echo, 200); 

for (var i = 0; i < 10; i++) { 
    var wait = Math.floor(Math.random() * 100); 
    setTimeout(function() { 
     console.log("Calling echo @" + _.now()); 
     echo2(); 
    }, wait); 
} 

지금 내게 실례합니다. 벽에 머리를 대어야합니다.