2009-03-09 2 views
0

저는 AJAX를 통해 두 가지 개별 검사를 수행해야하는 JavaScript 애플리케이션을 개발 중입니다. 각 검사의 결과에 따라 동작이 다릅니다. 여기에 관심이있는 경우는 두 검사가 모두 성공했을 때입니다. 이를 수행 할 수있는 몇 가지 방법을 찾아 냈습니다. 그래서 가장 좋은 접근 방식이라고 생각하는 의견에 대해 의견을 나누고 싶습니다.YUI 맞춤 이벤트 및 동시 동작

  1. 동기식 AJAX 호출 : 이것은 내가 상속 한 것이며 사라졌습니다. 브라우저 및 시스템 잠금이 발생하지만 단일 스레드 실행에서 응답 처리를 유지할 수는 있습니다.
  2. 데이지 체이닝 : AJAX 호출로 첫 번째 검사를 수행하고 통과하면 첫 번째 검사의 콜백에서 두 번째 검사를 수행합니다. 두 번째 수표를 처리하고 통과하면 성공합니다. 이것은 가장 간단한 해결책이지만, 두 개의 수표를 불필요하게 결합하는 것으로 보입니다. 내 수표를 직렬화하는 것이 불필요하고 성능을 저하시키는 느낌이 들기도합니다.
  3. 사용자 지정 이벤트 : YUI의 Event 모듈과 사용자 지정 이벤트 유틸리티를 사용하여 두 AJAX 호출을 동시에 끕니다. 성공 사례별로 커스텀 이벤트를 생성하고 AJAX 응답을 처리하는 콜백이 성공할 때마다 적절한 이벤트를 던지도록하십시오. 각 이벤트의 핸들러는 다른 이벤트에 등록 할 수 있으며, 이벤트가 발생하면 성공적으로 완료됩니다.

제 질문은 제 3의 접근 방식과 관련이 있습니다. 나는 핸들러가 던져지는 이벤트를 통해서만 연결된다는 것과 AJAX 호출이 동시에 발생할 수 있다는 사실을 좋아한다. 내가 알고 싶은 것은, 다른 누구도이 모듈을이 방법으로 사용 했습니까? 어떤 종류의 함정을 기대할 수 있습니까? 경쟁 조건 때문에 스스로를 설정했을 수도 있습니다. 어떻게 해결할 수 있습니까? 마지막으로, 지금까지이 기사를 읽은 사람이라면 더 좋은 방법이 있을까요? 내 목록은 포괄적이지 않습니까, 아니면 디자인에 근본적인 결함이 있습니까? 건설적인 비판과 발언은 환영 할 만하다.

편집 : 서버 요청은 세션을 사용하지만 서로 관련이 없으며 세션 데이터를 쓰지 않으므로 PHP 세션에 제한이없는 한 서버에서 병렬로 발생하지 않아도됩니다. 모르겠다.) 우리는 서버 측 검사도 수행합니다. 그러나 중요한 이벤트가 발생하기 전에 서버로 즉시 확인해야하므로 희소 한 상황에서 사용자에게 변경 사실을 알릴 수 있습니다.

답변

0

서버 측에서 가지고있는 것을 진술하지 않았습니까? 개인적으로 나는 실용적인 두 가지 이유 때문에 옵션 2를 선호합니다.

  1. 크로스 브라우저는 IE를 지원하고 IE는 서버에 2 개의 미해결 요청 만 허용 함을 의미합니다. 이 방법으로 두 가지 방법을 모두 사용하는 것은 피할 것입니다. 즉, 동기식 요청을 사용하는 것만 큼 심각한 것은 아니지만 여전히 상당히 나쁜 것은 아닙니다.

  2. 그러한 요청은 일종의 세션을 사용하는 서버 측 코드를 실행하는 경우가 많으며, 차례로 요청을 처리 순서로 제한하는 경향이있어 원하는 성능 향상이 실현되지 않습니다. 당신이 코드 경우

당신은, 그 요구 사항이 그들 사이에 커플 링을 만드는 따라서 두 결과를 필요로 하나의 옵션으로 다른 체인하는 것은 그이 수해야하는 이유를 구체적으로 해제 커플 링을 충분히 알고 그것의 디자인의 일부입니다.

+0

질문/답변이 마음에 들었으므로 원래 질문에 편집에 포함 시켰습니다. –