2010-09-28 2 views
6

나는 node.js를 배우고 있으며 간단한 예제를 다루고있는 대부분의 예제를 제공합니다. 실제 복잡한 시스템을 구축하고 node.js의 이벤트 기반 모델이 실제 애플리케이션의 모든 사용 사례를 얼마나 잘 처리 할 수 ​​있는지 평가하는 데 더 관심이 있습니다.node.js의 이벤트를 시간 초과시키는 일반적인 메커니즘이 있습니까?

적용하려는 일반적인 패턴 중 하나는 특정 시간 초과 시간 내에 발생하지 않으면 실행이 시간 초과되도록 차단하는 것입니다. 예를 들어 데이터베이스 쿼리를 실행하는 데 30 초 이상 걸리면 특정 응용 프로그램에 비해 너무 많은 것일 수 있습니다. 또는 파일을 읽는 데 10 초 이상 걸리는 경우

타임 아웃이있는 이상적인 프로그램 흐름은 예외가있는 프로그램 흐름과 유사합니다. 미리 정의 된 제한 시간 내에 이벤트가 발생하지 않으면 이벤트 리스너가 이벤트 루프에서 지워지고 대신 시간 초과 이벤트가 생성됩니다. 이 타임 아웃 이벤트는 대체 리스너를가집니다. 이벤트가 정상적으로 처리되면 시간 초과 리스너와 이벤트 리스너가 이벤트 루프에서 지워집니다.

타임 아웃 처리 및 시간 초과 된 프로세스 정리에 대한 일반적인 메커니즘이 있습니까? 소켓과 같은 일부 유형은 시간 초과 매개 변수를 가지고 있지만 모든 이벤트에 적용되는 일반적인 메커니즘은 아님을 알고 있습니다.

답변

1

현재로서는 (나는 알고 있지만 모든 것을 알지는 못합니다.) 이와 같은 것은 없습니다.

제가 생각할 수있는 유일한 점은 어떻게 든 직접 재설정 한 것입니다. 아래 예를 들었지만 범위 문제가있을 수 있습니다. 그래도 해결할 수 있어야합니다.

var to 
function cb() { 
    clearTimeout(to) 
    // do stuff 
} 
function cbcb() { 
    cb() 
} 
function cancel() { 
    cb = function() {} // notice empty 
} 
fs.doSomethingAsync(file, cbcb) 
to = setTimeout(cancel, 10000) 
관련 문제