2008-11-11 6 views
4

오류가 발생하면 재생할 수있는 고유 한 소리가 필요합니다. 이 오류는 급속한 화재로 2 백개 바코드 중 하나가 입력되는 문제로 인해 발생합니다. 이벤트 대기열은 키보드 입력 (바코드 스캐너가 에뮬레이트)을 먼저 처리하고 내 소리를 재생하는 것 같습니다. 따라서 바코드가 빠르게 스캔되면 오류 사운드는 대기열에 머무르며 다음 스캔시 충돌됩니다.JavaScript에서 이벤트 대기열 우선 순위를 변경할 수 있습니까?

대기열의 우선 순위를 조작 할 수 있습니까?

+0

당신이 말하는이 대기열은 무엇입니까? 코드의 관련 부분 또는이 대기열의 용도를 보여주는 최소한의 샘플을 공유하는 데주의하십시오. –

+1

필자가 작성한 코드가 아닙니다. 모든 자바 스크립트 엔진에 내장 된 이벤트 대기열입니다. Firefox를 사용하고 있습니다. – dacracot

+0

예. 그렇다면 어떻게 사용하고 계십니까? 바코드는 어떻게 검증되며 어떤 이벤트가 발생합니까? 키 누르기 이벤트 또는 텍스트 상자의 흐림 이벤트입니까? 소리가 들리는 원인은 무엇입니까? 귀하의 질문은 많은 사람들이 모호하게 사용하는 것이라고 생각합니다. –

답변

1

자바 스크립트는 멀티 스레드가 아니므로 옵션 2가 작동하지 않습니다. 그리고 당신이 말하는 이벤트 대기열이 운영체제의 이벤트 대기열이라고 생각합니다.이 대기열은 브라우저에서 액세스 할 가능성이 거의 없습니다.

그 외에도 문제를 이해하는 데 약간의 어려움이 있습니다. 오류 소리가 나는 것은 무엇입니까? keyup 등의 이벤트입니까? 아니면 오류 코드 또는 다른 것을 반환하는 서버 측 유효성 검사입니까?

+1

src = error.wav, hidden = true 및 autostart = true를 사용하여 DOM에 포함 객체를 만듭니다. 큐가 지워진 후에야 사운드가 재생됩니다. – dacracot

+1

오류를 확인하기 위해 클라이언트 측에서 검색되는 배열이 있습니다. – dacracot

0

(setTimeout()을 사용하여) 스캔을 지연하여 사운드가 시작되고 끝나는 것을 허용하면 어떨까요?

+0

스캔을 지연 시키면 데이터가 누락 될 것입니다. 스캔 할 때 트리거를 당기는 사용자이므로 필자는 반드시 느리게 할 수는 없습니다. – dacracot

+0

허, 스캐너가 브라우저와 어떻게 상호 작용하는지 이해하지 못하는 것 같습니다. 알고 있으면 유용 할 것입니다. 사용자 입력 (키보드에서 말)을 캡처하고 사용자의 속도에 관계없이 올바르게 조정하면 다른 일이 일어나도록 허용 할 수 있습니다. –

+1

바코드 스캐너는 키보드를 에뮬레이션합니다. – dacracot

1

사용자가 추측 할 수있는 것은 오류 소리가 들리면 사용자가 검사를 중지한다는 것입니다. 그렇다면 왜 사용자가 검색을 중지 할 때까지 기다려야합니다.

다음 중 하나를 수행 할 수 있습니다.

오류가 발생하자마자 데이터 입력을 중지하십시오. 'keypress'를 false로 반환하도록 설정할 수 있습니다. 또한 입력 데이터를 먼저 저장 한 다음 false를 반환하는 keypress 이벤트에 버퍼를 설정할 수 있습니다. 이렇게하면 오류가 발생한 후 데이터가됩니다.

+0

나는 당신이 그것을 뒤쪽으로 가지고 있다고 생각한다 - 그들이 스캔을 멈추거나 (질문을 다시 읽을 때까지) 에러 사운드가 재생 될 수 없다 - 그것이 작동한다면, 왜 그가 물어볼 것인가? ;-) - 비록 동의 할 필요가 있습니다. 이벤트에서 거짓을 반환하는 것이 좋습니다. – BrainSlugs83

관련 문제