2013-08-03 3 views

답변

1
y = 0; 

function x() { 
    alert('hi'); 
    y++; 
} 
func_x = setTimeout(x, 6000); 
$(window).load(function() { 
    if (y === 0) { 
     clearTimeout(func_x); 
     x(); 
    } 
}); 
2

나는 이것이 당신이 찾고있는 것을 할 것이라고 생각합니다.

function doSomething() { 
    // do something 
} 

var timeout = setTimeout(doSomething, 6000); 

$(window).load(function() { 
    clearTimeout(timeout); 
    doSomething(); 
}); 
+0

는'해봐요()는'두 번 호출 할 수있다. 하지만 고마워. – Iryn

+0

True이고, 타임 아웃이 먼저 실행되면'$ (window) .load()'를 언 바인드하는 것이 간단합니다. 더 나은 해결 방법은로드 시간을 단축하는 것입니다. – Rob

0

한 번만 실행되는 함수를 허용하는 함수 데코레이터를 만들 수 있습니다.

function DoOnce(what){ 
    var done = false, args = arguments.slice(1); 

    return function(){ 
     if (!done) { 
      done = true; 
      what.apply(args); 
     } 
    }; 
} 

당신은 다음과 같이, 이것을 사용할 수 있습니다 :이 같은

var handler = DoOnce(function(a){ alert(a);}, 1); 
window.onload = handler; 
setTimeout(handler, 6000); 
0

을 :

function yourfunction(){ 
    //your code 
} 
var a = setTimeout(yourfunction, 6000); 
window.onload = function(){ 
    if(a){ 
     clearTimeout(a); 
    }else{ 
     yourfunction(); 
    } 
} 
+0

올바르지 않습니다. 'a'는 항상 사실입니다. – Iryn

관련 문제