2013-07-10 6 views
1

이것은 바보 같은 질문 일지 모르지만 나는 매 30 초마다 저장을 수행하는 setInterval을 가지고 있습니다. setInterval 새로 고침시 실행

setInterval(SaveContent(true), 30000); 

나는 또한 내가 페이지를 새로 고칠 때 setInterval을가 SaveContent를 실행하는 이유는 확실하지 않다

window.setInterval(SaveContent(true), 30000); 

setTimeout(setInterval(SaveContent(true), 30000), 30000); 
window. setTimeout(setInterval(SaveContent(true), 30000), 30000); 

을 시도했다. 나는 무엇인가하기 전에 30 초를 기다리는 것이었지만?

답변

3

보십시오 : 당신은 함수에 직접 인수를 전달할 수 없습니다

setInterval(function() {SaveContent(true)}, 30000); 

당신은 그래서 당신은 익명 함수를 포함 할 필요가 호출합니다.

() 함수 이름을 호출 한 후이 값을 setInterval 함수에 반환합니다.

선택적으로 당신은이 방법으로 호출 할 수 있습니다 :

setInterval(SaveContent, 30000); 

과 다음 함수 :

function SaveContent(b) { 

    if (typeof b === 'undefined') b = true; //defaults to true 

    // ... 

} 
3

당신은 setInterval에 함수를 전달하려는 :

setInterval(function(){ SaveContent(true); }, 30000); 

방법 자, 이제 SaveContent(true)을 실행하고 반환 값을 0123으로 전달합니다..

+0

OK 있도록. 하지만 이전에 비슷한 일을했습니다. 여기서'function autoSave() {SaveContent (true)}'함수를 정의하고 setInterval'setInterval (autoSave, 30000)'에 전달했지만 작동하지 않았습니다. –

+0

그냥 궁금 해서요.이 질문에 답을 올렸습니다. 같은 점수로 어떻게 올랐습니까? – K3N

+1

@ Ken-AbdiasSoftware : 각 페이지가 무작위로 나타납니다. – Ryan

0

jQuery를 당신은 미리 정의 된 인수로 함수를 전달하는 $.proxy을 사용할 수 있습니다 그게 내가 7 분 전까지 동의를 cannnot 대답은

setInterval($.proxy(SaveContent,null,true), 30000) 
+1

또는'SaveContent.bind (null, true)'를 사용하십시오. jQuery는 여기에 함수 리터럴 대 많은 타이핑을 저장하지 않습니다. – Ryan

+0

@minitech : 그래, 그렇게해야합니다. 보통 네이티브 바인딩을 사용하여 답변을 게시하지만 사람들은 "구식 브라우저와 호환되지 않습니다"라고 말하지만 "polyfill"(https://developer.mozilla.org/en-US/docs/Web/)이 있습니다. JavaScript/Reference/Global_Objects/Function/bind) "등, 등등. – elclanrs

관련 문제