jquery when 예제 속시원내과 | 2019년 8월 3일

경우에 따라 함수가 처음 실행될 때 비동기 작업을 수행한 다음 나중에 사용할 값을 캐시하는 경우와 같은 즉시 반환되거나 비동기일 수 있는 작업이 있는 경우가 있습니다. 이 경우 $.when()를 사용하여 두 경우 모두 대응할 수 있습니다. 지연을 사용하는 첫 번째 예제에서는 이름에 “README.md”문자열이 포함된 파일을 찾는 스니펫을 개발했지만 해당 파일이 발견되지 않은 상황을 고려하지 않았습니다. 이 상황은 실패로 볼 수 있습니다. 이 경우 우리는 통화의 사슬을 끊고 바로 끝까지 이동할 수 있습니다. 이렇게하려면 JavaScript의 catch() 메서드와 마찬가지로 예외를 throw하고 fail() 메서드로 catch하는 것이 자연스러울 수 있습니다. 지연된 개체는 Ajax 요청 및 애니메이션과 같은 비동기 작업을 수행할 때 사용할 수 있습니다. jQuery에서 Promise 개체는 지연된 개체 또는 jQuery 개체에서 만들어집니다. 항상(), done(), fail(), state() 및 ())의 메서드의 하위 집합을 보유합니다.

다음 섹션에서이러한 방법과 다른 방법을 다룹니다. 이 경우 오류가 발생 하면 응답은 여전히 http 상태 200 (“확인”)으로 돌아갑니다. jQuery의 AJAX 메서드에서 반환된 약속은 HTTP 요청이 실패하는 경우에만 거부되므로 실패 콜백이 아닌 성공 콜백에서 오류 처리를 수행해야 합니다. 이 모양은 다음과 같습니다: 분명히 이것은 이상적인 상황이 아닙니다. pipe() 전력을 활용하여 AJAX 요청의 해결을 가로채는 새로운 지연을 만들 수 있습니다. JSON 응답에서 “오류” 플래그를 확인합니다. true이면 파이프가 실제로 거부된 지연을 반환하여 실패 콜백이 실행됩니다. 다음은 파이프의 이러한 사용을 보여주는 예입니다: 여러 지연 된 개체가 jQuery.when()에 전달 되는 경우 메서드는 전달 된 모든 지연 된 모든 의 집계 상태를 추적 하는 새 “마스터” 지연 된 개체에서 Promise를 반환 합니다. 메서드는 모든 지연이 해결되는 즉시 마스터 지연을 해결하거나 지연된 것 중 하나가 거부되는 즉시 지연된 마스터를 거부합니다. 마스터 지연이 해결되면 완료된 지연된 마스터에 대한 콜백이 실행됩니다. done에 전달된 인수콜백은 각 지연에 대해 해결된 값을 제공하고 지연된 순서가 jQuery.when()에 전달된 순서와 일치합니다. 예: 사이트에서 사용자에게 프로필을 생성하도록 요청합니다.

프로필을 완전히 작성하도록 유도하려면 완료에 얼마나 가까운지를 나타내는 진행률 미터를 표시합니다. 그들이 그것을 작성할 때, 당신은 진행 률 미터를 변경하고, 그들이 완료되면 당신은 “감사 메시지”를 표시하고 싶습니다. 네이티브 JavaScript 세계에서 오는 경우 이 두 개체의 존재로 인해 혼란스러울 수 있습니다. 자바 스크립트가 하나 (약속)가있을 때 왜 두 개의 객체 (지연 및 약속)가 있습니까? 차이점과 사용 사례를 설명하기 위해 제 책 jQuery in Action, 세 번째 에디션에서 사용한 것과 동일한 비유를 채택할 것입니다. JSON은 데이터의 문자열 표현입니다. 일반 JavaScript 개체처럼 보이지만 일반 JavaScript 개체가 나타낼 수 있는 데이터의 하위 집합을 나타내는 데만 사용할 수 있습니다. 예를 들어 JSON은 함수 또는 날짜 개체를 나타낼 수 없습니다. 다음은 JSON 문자열의 예입니다. 모든 속성 이름을 인용하는 방법 참고: 단일 지연된 이연이 가 jQuery.when()에 전달되는 경우 Promise 개체(지연 메서드의 하위 집합)가 메서드에 의해 반환됩니다. Promise 개체의 추가 메서드를 호출하여 .then 과 같은 콜백을 연결할 수 있습니다. 일반적으로 지연을 원래 만든 코드에 의해 지연이 해결되거나 거부되면 적절한 콜백이 호출됩니다.

예를 들어 jQuery.ajax(jQuery.ajax)에서 반환되는 jqXHR 개체는 Promise 호환 개체이며 이러한 방식으로 사용할 수 있습니다.

Comments are closed.