2009-09-18 3 views
0

나는 다음과 같은 코드가의 패스 기능 포인터 :는 자바 스크립트 setInterval을 - 대신 문자열

XService.start = function() { 
    setInterval("XService.poll()", XService.pollInterval); } 

이 잘 작동합니다. 나는이 작업을 수행 할 때, (참고로 함수를 전달하는 대신 문자열 eval'd를 가짐)는 작동하지 않는다 :

XService.start = function() { 
    setInterval(XService.poll, XService.pollInterval); } 

이유는 무엇입니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까? 내 코드에서 변경된 사항은 없습니다. 두 번째 버전에서는 XService.poll()을 시도했지만 주사위도 사용하지 않았습니다. 제가 읽은 문서는()를 뺍니다.

도움 말?

편집 : XService.poll은 함수입니다. XService.pollInterval은 숫자입니다. 둘 다 선언되고 올바르게 할당됩니다.

Edit2가 다음하는 Xservice 번호 :

XService = {}; 
XService.pollUrl = "/Poll"; 
XService.pollInterval = 60000; 
XService.poll = function() { 
    $.get(this.pollUrl, null, null, "text"); } 
XService.start = function() { 
    setInterval(XService.poll, XService.pollInterval); } 

답변

1

'는 XService.pollInterval'A '기능'및 특정 시간에 다수 XService.poll인가?

편집 : 당신은 지금 코드를 게시 때문에 ..

setInterval(

    function() { 
     XService.poll(); 
    }, XService.pollInterval 

); 
+0

당신이 오류를 얻고있는 방법을 부를 것이다? –

+0

XService에 대한 전체 코드를 볼 수 있습니까? 정의되는 방식과 관련이있을 수 있으며 실시간/런타임 동작 및 eval이 어떻게 다르게 실행되는지에 관련 될 수 있습니다. –

+0

X SERVICE 코드 – Alex

0

이 기능 변경에 바인딩 무엇.

첫 번째를 호출하면 'this'문이 XService 개체에 바인딩됩니다. 두 번째를 호출하면 'this'문이 창 개체에 바인딩됩니다. 예를 들어

, 우리는이

function poll(){ alert(this); } 

경우 첫 번째 예처럼 여론 조사와 함께하는 Xservice이 있다고, 그것은하는 Xservice 개체를 알려줍니다,하지만 두 번째 예에서 창 개체를 알려줍니다.

나는 Mootools의에서 제외 구문을 모르지만, mootoos에 당신은

setInterval(XService.poll.bind(XService), 100) 

를 호출 할 것이고, 제대로

+0

투표 기능에서이 문장은 범인입니다. – Alex

+0

CMS가 말한 것을 수행하면 바인딩 문제가 해결되며 익명 기능을 사용하여 해결됩니다. –