2014-12-16 2 views
2

javascript를 사용하여 로더/스피너를 만들었습니다. 방적 기능은 모든 공정이 끝날 때까지 작동합니다.함수가 실행되었는지 확인하는 방법

나는 회 전자를 멈추는 기능이있다. 오류가 발생하면이 중지 기능이 실행되지 않습니다.

누구든지 정지 기능이 실행되었는지 여부를 확인하고 제한 시간이 지나면 회전 기능이 종료되지 않았는지 알릴 수 있습니까?

자바 스크립트 코드의 조각 : 당신이 할 수

function loaderstart() 
{ 
    var x = document.getElementById("loader"); 
    var xx = document.getElementById("img"); 
    x.style.display = "block"; 
    xx.style.display = "block"; 

    setTimeout(function(){ 
     if(loaderstop() != true){ 
      alert("check your network connection"); 
     } 
    },10000); 
} 

function loaderstop() 
{ 
    var y = document.getElementById("loader"); 
    var yy = document.getElementById("img"); 
    y.style.display = "none"; 
    yy.style.display = "none"; 
    return true; 
} 
+0

추가 "('loaderStop 내부')을 console.log를". 회선이 콘솔에 있는지 여부를 확인하십시오 (F12 키 W 검색 콘솔 누름). 다른 현명하고 일시적으로 경고 ('inside loaderStop')를하고 경고 메시지가 표시되는지 확인하십시오. – Playmaker

+0

또한 "if (loaderstop()! = true)"를 "if (! loaderstop())"로 단축 할 수 있습니다. – Playmaker

+0

console.log가 잘 작동하지만 네트워크 문제로 인해 두 번째 기능이 작동하지 않을 수 있습니다. 따라서 loaderstop 기능이 실행되지 않는 경우 경고해야합니다. – jasna

답변

2

하나의 간단한 방법은 설정 및 글로벌 부울 변수를 확인하는 것입니다. 변수에

var hasStopped = false; 
function loaderstart() 
{ 
var x = document.getElementById("loader"); 
var xx = document.getElementById("img"); 
x.style.display = "block"; 
xx.style.display = "block"; 
setTimeout(function(){if(!hasStopped){alert("check your network connection");}},10000);  
} 

function loaderstop() 
{ 
hasStopped = true; 
var y = document.getElementById("loader"); 
var yy = document.getElementById("img"); 
y.style.display = "none"; 
yy.style.display = "none"; 
return true; 
} 
+0

hasStopped의 값이 false 또는 "no value"인 경우 (! hasStopped)는 무엇을 의미합니까? – jasna

+0

예. 기본적으로'''if variable == false'''를 의미하는 Javascript 바로 가기 (및 다른 많은 언어들)입니다. – LongZheng

+0

! NOT 연산자와 같습니다. 기본적으로 부울 값을 반전합니다. 그러므로 hasStopped = false ->! hasStopped = true – Playmaker

0

저장 시간 제한 ID 및 loaderstop 내부를 확인 : 당신의 2 funciton 내부로 1 라인

var TO = 0; 

function loaderstart() { 
    var x = document.getElementById("loader"); 
    var xx = document.getElementById("img"); 
    x.style.display = "block"; 
    xx.style.display = "block"; 

    TO = window.setTimeout(function(){ 
     alert("check your network connection"); 
    }, 10000);  
} 

function loaderstop() 
{ 
    var y = document.getElementById("loader"); 
    var yy = document.getElementById("img"); 
    y.style.display = "none"; 
    yy.style.display = "none"; 

    if (TO) { 
     window.clearTimeout(TO); 
    } 

    return true; 
} 

window.clearTimeout()

+0

10 초 후에 경고 메시지가 나타납니다. 두 번째 함수가 제한 시간 내에 실행되지 않을 때만 경고가 필요합니다. – jasna

+1

'loaderstart()'를 호출하고 10 초 내에'loaderstop()'을 호출하면 경고가 나타나지 않습니다. loaderstart()를 호출 한 후 10 초 후에'loaderstop()'을 호출하거나 절대로 호출하지 않으면 경고가 나타납니다. – Zudwa

+0

다른 시간 길이가 필요한 경우 - 시간 초과 값을 필요한 값 (밀리 초 단위)으로 변경하십시오. – Playmaker

관련 문제