문제

할 수 있는 방법을 종료 자바 스크립트는 훨씬 다음과 같 PHP exitdie?나는 그것을 알지 않고 최고의 프로그래밍을 연습만 내가 필요합니다.

도움이 되었습니까?

해결책

PHP의 JavaScript에 해당합니다 die. btw 그것은 단지 전화를합니다 exit() (감사합니다 Splattne) :

function exit( status ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Brett Zamir (http://brettz9.blogspot.com)
    // +      input by: Paul
    // +   bugfixed by: Hyam Singer (http://www.impact-computing.com/)
    // +   improved by: Philip Peterson
    // +   bugfixed by: Brett Zamir (http://brettz9.blogspot.com)
    // %        note 1: Should be considered expirimental. Please comment on this function.
    // *     example 1: exit();
    // *     returns 1: null

    var i;

    if (typeof status === 'string') {
        alert(status);
    }

    window.addEventListener('error', function (e) {e.preventDefault();e.stopPropagation();}, false);

    var handlers = [
        'copy', 'cut', 'paste',
        'beforeunload', 'blur', 'change', 'click', 'contextmenu', 'dblclick', 'focus', 'keydown', 'keypress', 'keyup', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'resize', 'scroll',
        'DOMNodeInserted', 'DOMNodeRemoved', 'DOMNodeRemovedFromDocument', 'DOMNodeInsertedIntoDocument', 'DOMAttrModified', 'DOMCharacterDataModified', 'DOMElementNameChanged', 'DOMAttributeNameChanged', 'DOMActivate', 'DOMFocusIn', 'DOMFocusOut', 'online', 'offline', 'textInput',
        'abort', 'close', 'dragdrop', 'load', 'paint', 'reset', 'select', 'submit', 'unload'
    ];

    function stopPropagation (e) {
        e.stopPropagation();
        // e.preventDefault(); // Stop for the form controls, etc., too?
    }
    for (i=0; i < handlers.length; i++) {
        window.addEventListener(handlers[i], function (e) {stopPropagation(e);}, true);
    }

    if (window.stop) {
        window.stop();
    }

    throw '';
}

다른 팁

"종료"기능은 일반적으로 오류 메시지와 함께 매개 변수로 프로그램이나 스크립트를 종료합니다. 예를 들어, php에서 다이 (...)

die("sorry my fault, didn't mean to but now I am in byte nirvana")

JS의 동등한 것은 던지다 다음과 같은 키워드 :

throw new Error();

이것을 쉽게 테스트 할 수 있습니다.

var m = 100;
throw '';
var x = 100;

x
>>>undefined
m
>>>100

핸들, 이벤트 등이없는 간단한 프로그램에서도 코드를 유일한 절차 일 때도 코드를 "기본"기능에 넣는 것이 가장 좋습니다.

<script> 
function main()
{
//code

}
main();
</script>

이런 식으로 프로그램을 중지하려면 "반환"을 사용할 수 있습니다.

거기 있습니다 여러 가지 방법 JS 또는 노드 스크립트를 종료하려면 가장 관련성이 있습니다.

// This will never exit!
setInterval((function() {  
    return;
}), 5000);

// This will exit after 5 seconds, with signal 1
setTimeout((function() {  
    return process.exit(1);
}), 5000);

// This will also exit after 5 seconds, and print its (killed) PID
setTimeout((function() {  
    return process.kill(process.pid);
}), 5000);

// This will also exit after 5 seconds and create a core dump.
setTimeout((function() {  
    return process.abort();
}), 5000);

당신이 있다면 대답 (즉, 달리기 후 node 명령 줄에서) 입력 할 수 있습니다 .exit 나가기 위해서.

당신이 그것이 오류라고 신경 쓰지 않으면, 그냥 쓰기 만하면됩니다.

fail;

그것은 당신의 메인 (글로벌) 코드가 진행되는 것을 막을 것입니다. 디버깅/테스트의 일부 측면에 유용합니다.

두는 debugger; 실행을 중지하려는 JavaScript 코드의 키워드. 그런 다음 좋아하는 브라우저의 개발자 도구를 열고 페이지를 다시로드하십시오. 이제 자동으로 일시 중지해야합니다. 열기 출처 도구의 섹션 : the debugger; 키워드가 강조되며 스크립트 실행을 재개 할 수있는 옵션이 있습니다.

도움이되기를 바랍니다.

추가 정보 :

내 경우에 나는 사용했다 window.stop 브라우저에서 X 버튼을 클릭하는 것과 같은 API :

window.stop();

이 대답은 세부 정보를 제공하여 여분의 프레임워크를 해결하는 데 도움이됩니다 이것과 다른 조기 종료,예외 프로세스 제어,그리고 순차적인 함수 처리 요구에서 모듈 자바스크립트.솔루션을 제공합퍼 예입니다.이 대답에서는 개별적인 것처럼 다른 스크립트가 페이지에서 계속 실행하는 스크립트 후 질문에 종료됩니다.

라이브의 예는 간단한 솔루션이 여기: https://jsfiddle.net/alignedfibers/cpe1o1yy/66/

<script>
    var safetyRun = (function(){
      var curExecution = null;
      var exceptionHandlers = {
        cleanup:function(){
          /*do exit cleanup*/
          console.log("Cleanup could set straglers to {}");
          return;
        }
      }
      var exitErr = function(errcode){
        curExecution.exNames.push("cleanup");
        throw new Error("EarlyExit");
      }
        var run = function(fun){
          curExecution = this;
          curExecution.exNames = [];
          fun(exitErr);
          for ( x in exNames){
            exceptionHandlers[x]();
          }
          return;
        }
        return run;
    })();
    var exitThisScript = function(exit){
      //write some modular code
      console.log("before exit");
      exit();
      console.log("after exit");
      return;
    }
    safetyRun(exitThisScript);
</script>

위은"CallRunner"을 제공하는 매우 간단한 방법에 의해 무료로 전달 함수를 주자입니다.

변수 이름에서 바이올린을 혼동 될 수 있습니다,함수는"재미"을 사용하는 이름을 내 safetyRun 을 참조하는 기능을 우리가 노력하고 종료하고 exitErr 이름을 참조하는 데 사용되는 기능을 우리는 실행하는 실제적으로 완료합니다.또한 혼란을 조금은:면 exitErr 이 완료되면 스프레임지에서 스레드를 제어하는 함수를 호출한 우리는 종료됩니다.기 때문에 우리가 아직도 실제 우리가 사용할 수 있는 기능 또는 오류 코드를 밀어에서 배 exitErr 기능 및 그들에게 전화 itteratively 반환하기 전에 허용하는 다른 기능을 실행합니다.이것은 있을 변경하는 어떤 무게 또는 정정하거나 설정한 모든 필요한 상태는 우리가 사용할 수 있습니다 경고하는 무엇인 오류 보정 상태,주의가 필요한 보 로그인 보고서 또는 완전한 도전적인 정리고 자율적으로 수정 기능경 및 itteratively 전화 exitErr 완료될 때까지 반환 대신에 던져 따라서 허용하는 기능을 우리가 노력하고 종료 초체,(하는 건 이 offmainthread).이"wrapper/마구"좋은 방법이 될 수있는지 확인하는 브라우저 버전과 재료의 시작에서 기능할 수 있도 할 정적 또는 동적 가져오 여기를 관리하는 경우 자신의 라이브러리 또는 이제까지 당신은 정말 생각할 수 있습니다.출구 하나만 fundemental 함수에서 사용할 수 있도록 설정할 수 있는 함수에 대한 감싸는데,이렇게 하면 된다.

코드에서 바이올린은 조금 더러운지,새로운 es6 구성할 수 있을 만들이 예뻐합니다.또한 추천 호출하는 마구 발전기의 상단에 이 기능 및 할당 그 결과 로컬 var 그래서 당신이 원하는 기능을 종료 할 수상 코드는 아래.을 유지하기 위해서 쓰레드의 통제를 해제하지 않고 스택,당신은 여전히 해야 할 필요가 있다.실행(function(harness){/MyVanillaFunc/})포장의 바닐라 기능,그렇지 않으면 아래 이론에서 작업해야 합니다.포장 정확히 무엇을 했는지에 exitEarly 위 코드.

var rockStarFunction = new function (){
var harness = reducePublicStrapOnFromCache()._url(location);
return function(){ /*wrapper would wrap these internals*/
        harness.scriptContextChangeEvent();
        harness.imInteligentFunction("{slib_err-15346 : 'Cannot handle request, ::suggest(mesh//abc) exit back to pool'}");
        harness.exit();
        console.log("You should never get this far");
        return true;
    };
}

이 솔루션을 제공 여기에 내가 추천하는 경우 당신의 의도를 구축하는 자바 스크립트너 컨테이너 등의 기능을 종료,주장이 조롱과 같은 내장되어 있습니다.내 생각에 이것은 더 나은 건축 방법을 이 컨테이너선 제 기능을 전송 가능.

페이지에서 모든 JavaScript의 실행을 강제로 종료 할 수있는 방법을 찾고 있다면 공식적으로 승인 된 방법이 있는지 확실하지 않습니다. 보안 위험이 될 수있는 종류처럼 보입니다 ( 솔직히 말해서, 나는 그것이 내 머리 꼭대기에서 어떻게 될지 생각할 수 없습니다). 일반적으로 코드가 실행 중지를 원할 때 JavaScript에서 return 실행중인 기능에서. (그만큼 return 진술은 함수의 마지막 것이고 함수가 값을 반환하지 않아야하는 경우 선택 사항입니다. 아마도 누군가가 대체 솔루션을 제공 할 수 있습니다.

실제로 대부분의 브라우저의 JavaScript 통역사는 오류가 발생하면 현재 스크립트 실행을 중단합니다. 따라서 UNSET 변수의 속성에 액세스하는 것과 같은 작업을 수행 할 수 있습니다.

function exit() {
    p.blah();
}

그리고 그것은 할 것입니다 아마 스크립트를 중단합니다. 그러나 그것은 모든 표준이 아니기 때문에 그것을 믿어서는 안되며, 실제로 끔찍한 연습처럼 보입니다.

편집하다: 알겠습니다. 아마도 이것은 Ólafur 's에 비추어 그다지 좋은 대답이 아니었을 것입니다. 비록 die() 기능은 기본적으로 내 두 번째 단락을 구현하기 위해 연결된 기능입니다. 즉, 오류가 발생합니다.

업데이트 : 이것은 당신이하지 않는 한 오래 작동합니다 catch 그것!

throw window.location.assign('dead.html');

이 작은 기능은 PHP의 종료 ()를 모방하는 데 매우 가깝습니다. 다른 솔루션과 마찬가지로 다른 것을 추가하지 마십시오.

function exit(Msg)
    {
    Msg=Msg?'*** '+Msg:'';
    if (Msg) alert(Msg);
    throw new Error();
    } // exit

Bool 조건을 만듭니다. 여기에서 복잡한 코드가 필요하지 않습니다 ..

일단 당신이 그것을 true/ 또는 여러 번 돌리면, 둘 다 하나의 솔루션을 제공합니다.

던지다 "";

개념의 오용이지만 아마도 유일한 옵션 일 것입니다. 그리고 예, 허용 된 답변과 마찬가지로 모든 이벤트 청취자를 재설정해야합니다. 내가 옳다면 단일 입력 지점이 필요합니다.

그 위에 : 당신은 던지 자마자 이메일로 당신에게보고하는 페이지를 원합니다. 예를 들어 Raven/Sentry를 사용할 수 있습니다. 그러나 그것은 당신이 자신을 잘못된 긍정을 생성한다는 것을 의미합니다. 이 경우 Sentry의 대시 보드에서 무시에 그러한 이벤트를 필터링하거나 해당 이벤트를 설정하기 위해 기본 핸들러를 업데이트해야합니다.

window.stop ();

이것은 페이지를로드하는 동안 작동하지 않습니다. 페이지의 디코딩도 중지합니다. 따라서 실제로 사용하여 사용자에게 페이지의 JavaScript가없는 변형을 제공 할 수 없습니다.

디버거;

디버거가 열린 상태에서만 실행을 중지합니다. 훌륭하지만 전달할 수있는 것은 아닙니다.

이 질문에 응답했다고 생각합니다 여기 자세한 내용은. 아래는 게시 된 짧은 대답입니다.

throw new Error("Stop script");

브라우저를 사용하여 중단 점을 추가 할 수도 있고, 모든 브라우저는 비슷합니다. 아래에서 브라우저의 정보를 확인하십시오.

Chrome Break Points 정보는 클릭하십시오 여기
Firefox Break Points 정보는 클릭하십시오 여기
Explorer Break Points 정보 딸깍 하는 소리
사파리 브레이크 포인트 정보는 클릭하십시오 여기

스크립트에서 정의되지 않은 함수를 사용하면 "uncught referenceError"로 인해 스크립트가 중지됩니다. 코드를 따라 시도했고 첫 두 줄이 실행되었습니다.

나는 이것이 대본을 중지하는 가장 좋은 방법이라고 생각합니다. 다른 방법이 있다면 저에게 댓글을 달아주세요. 나는 또한 또 다른 최고의 방법을 알고 싶습니다. BTW, 나는 스크립트 종료를 위해 PHP와 같은 JavaScript에서 출구 또는 내장 기능을 얻지 못했습니다. 누구든지 아는 사람이라면 알려주세요.

alert('Hello');

document.write('Hello User!!!');

die();  //Uncaught ReferenceError: die is not defined

alert('bye');

document.write('Bye User!!!');

이것은 조건이 존재하면 스크립트를 종료한다는 예입니다. 나는 이것을 내 SSE 클라이언트 측 JavaScript에서 사용합니다.

<script src="sse-clint.js" host="https://sse.host" query='["q1,"q2"]' ></script>

Canot은 JSON PARSE에서 바로 구문 분석 ...

if( ! SSE_HOST  ) throw new Error(['[!] SSE.js: ERR_NOHOST - finished !']);

... 어쨌든 일반적인 아이디어는 다음과 같습니다.

if( error==true) throw new Error([ 'You have This error' ,  'At this file', 'At this line'  ]);

이것은 당신의 javasript 스크립트를 종료/죽습니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top