2013-03-08 2 views
0

현재 실행중인 함수를 호출 한 함수를 종료하는 방법이 있습니까?자바 스크립트에서 호출 함수를 종료하는 방법

예제는 다음과 같습니다

function doOneTwoThree(){ 

    doStuff(1, print); 

    doStuff(2, print); 

    doStuff(3, print); 

} 

function doStuff(parameter, aFunction){ 

    if(parameter === 2) { 
     //exit from doOneTwoThree 
    } 

    aFunction(parameter); 
} 

function print(something){ 

    console.log(something); 

} 

또 다른 옵션은 doStuff에서 오류를 반환하고 doOneTwoThree에 해당 오류에 대해 내가 doStuff를 호출 할 때마다 확인하는 것입니다. 하지만 난 ... 그것을 위해 모든 시간을 확인해야하지 싶습니다

+0

'수익을, '내 사랑 : – kidwon

+0

당신은 언제나 목적에 자바 스크립트 오류가 발생 할 수 있습니다. –

+0

'return'은 호출하는 함수로 돌아갑니다. 아니면 오해입니까? –

답변

2

당신은 throw를 사용하고 doOneTwoThree의 오류 던져 잡을 수있다 : 당신이 실제를 던지고하지 않는 경우, 그러나

function doStuff(parameter, aFunction) { 
    if (parameter === 2) { 
     throw "error"; 
    } 
} 

function doOneTwoThree() { 
    try { 
     doStuff(1, print); 
     doStuff(2, print); 
    } 
    catch (error) { /* handle here */ } 
} 

을 오류/예외가 발생하면 이 아님은 코드 흐름을 제어하는 ​​데 사용됩니다. 대신 doStuff 호출의 반환 값을 확인하여 계속할 수 있는지 확인해야합니다. 만약 당신에게 부정한 소리가 나면, 당신은 doStuff 체인과 같은 것을 할 수도 있고, doStuff 반환 값을 기반으로 탈옥 할 수있는 루프로 호출 할 수도 있습니다.

0

다음과 같이 시도해보십시오. 토큰/마법 값을 반환 하시겠습니까? ('EEK'와 같은 문자열은 아마 나쁜 토큰이지만, 나, int로 대신 사용 즐겁게)

function doOneTwoThree(){ 

    if (doStuff(1, print) === "eek") return; 

    doStuff(2, print); 

    doStuff(3, print); 

} 

function doStuff(parameter, aFunction){ 

    if(parameter === 2) { 
     return "eek"; 
    } 

    aFunction(parameter); 
} 
관련 문제