2013-04-01 4 views
8

약속을 다룬 비동기 작업이 많은 상당히 큰 JavaScript 모듈을 작성하면서 디버그하고 약속의 흐름/상태를 따르기가 상당히 어려워집니다.JavaScript 약속을 추적하고 시각화하는 방법은 무엇입니까?

내 시스템에서 모든 약속의 흐름을주기 위해 테스트 또는 모듈 코드를 계측하기위한 도구 또는 프레임 워크가 있습니까? jQuery 약속이 중요하다면 사용하고 있습니다.

+0

+1 우수 질문. 필자는 모든 약속이 루프 및 디버깅을 쉽게 수행 할 수 있도록 단일 배열에 저장되는 내 약속 라이브러리를 작성했습니다. jQuery에서 어떻게 작동하는지 이해하고 싶습니다. 질문이 끝나면 다시 열어 보겠다고 투표했습니다. – Christophe

+0

@Christophe는 유용하다고 생각하기 때문에 질문을 다시 열지 마십시오. StackOverflow에 대한 유용한 질문은 없습니다. '최고의 도구/팁/트릭'을 묻는 질문은 실제로 끝이 없으며 질문에 하나의 정답이있을 수없는 경우 Q/A 사이트에 StackOverflow로 속하지 않습니다. –

+0

이 질문은 유용하지만 실제로 스택 오버플로에 속하지는 않습니다. [programmers.se]를 사용해보십시오 (마이 그 레이션 할 플래그) –

답변

1

꽤 많은 개발 오버 헤드가 추가되지만 노드를 백 엔드에 사용하는 경우 vows.js으로 매우 강력한 비동기 유닛 테스트를 구현할 수 있습니다. 더 많은 일을 혼자서 추가하고 싶다면 다른 종류의 서버 기술을 사용하고 있다면 서약을 사용하여 모든 응답의 모의 버전을 만들어 테스트 및보고에 사용할 수 있습니다. node.js 모의 서버를 사용하면 특정 요청이 프런트 엔드가 정상적으로 응답하는 방식을 보지 못했다는 사실을 시뮬레이션하는 것과 같은 강력하고 엔터프라이즈적인 작업을 수행 할 수 있습니다.

나는 이보다 더 나은 대답을 원한다. console.logconsole.dir은 가장 친한 친구입니다. 당신의 콜백을 가득 채워서 물건이 얼마나 오래 걸리는 지, 어떤 순서로 일어나는지 생각해 낼 수 있습니다.

2

내 머리 꼭대기에서 벗어나 @ MrLeap의 아이디어에 자극을 받아 console에 메시지를 보내면 자신의 디자인의 "어댑터"를 통해 Deferreds를 만드는 것이 어떻습니까?

예 (배아 및 검증되지 않은) :

var debugMode = true; 

function DeferredAdapter(name) { 
    var dfrd = $.Deferred(); 
    if(debugMode) { 
     dfrd.notify = function() { 
      console.log(name + ': notify'); 
      if (arguments[0] && typeof arguments[0] == "string") 
       console.log(arguments[0]); 
     }; 
     //similar for resolve 
     //similar for reject 
    } 
    return dfrd; 
} 

이 방법 (당신이 일하고있어 한 경우) 간단한 메커니즘과 디버깅, 생산에 여분의 물건을 해제 할 때, 당신은 여분의 물건을 할 수 있습니다 코드를 사용하지 않고 코드를 모두 지우지 않아도됩니다. console.log().

관련 문제