> 웹 프론트엔드 > 프런트엔드 Q&A > Ajax 동기식 및 비동기식이란 무엇입니까?

Ajax 동기식 및 비동기식이란 무엇입니까?

WBOY
풀어 주다: 2022-07-04 15:57:54
원래의
3546명이 탐색했습니다.

ajax 동기화는 JavaScript 코드가 현재 ajax에 로드되면 페이지의 모든 코드 로드가 중지되고 페이지가 일시 중단된 애니메이션 상태가 된다는 것을 의미합니다. 정지된 애니메이션 상태이며 코드는 계속 실행됩니다. ajax 비동기는 현재 ajax 코드가 실행 중일 때 다른 코드도 실행될 수 있음을 의미합니다.

Ajax 동기식 및 비동기식이란 무엇입니까?

이 기사의 운영 환경: windows10 시스템, javascript1.8.5&&html5 버전, Dell G3 컴퓨터.

Ajax 동기화 및 비동기란 무엇입니까

(1) 동기화란 JS 코드가 현재 AJAX에 로드되면 페이지의 모든 코드가 로드를 중지하고 페이지가 애니메이션 정지 상태가 된다는 것을 의미합니다. 페이지는 AJAX가 실행된 후 해제됩니다. 애니메이션이 일시 중지된 상태에서는 코드가 계속 실행됩니다.

(2) 비동기식은 현재 AJAX 코드가 실행되는 동안 다른 코드가 실행될 수 있음을 의미합니다.

jquery의 async:false, 이 속성

기본값은 true: 비동기, false: 동기입니다.

예는 다음과 같습니다:

$.ajax({
           url: prefix + "/exportById",
           data: {ids:ids},
           type: 'POST',
           traditional: true,
           cache:false, 
           async:false, 
           success: function (result) {
            if (result.code == web_status.SUCCESS) {
                  window.location.href = ctx + "common/download?fileName=" + result.msg + "&delete=" + true;
                } else {
                             alert("导出失败");
                    }
                }
        });
로그인 후 복사

지식 확장

AJAX는 동기 요청을 어떻게 구현합니까?

Ajax 요청은 동기식 요청과 비동기식 요청으로 나뉘는데, 기본적으로 비동기식 요청이 있는데, Ajax를 사용하여 동기식으로 요청하려면 이 동기식 요청을 어떻게 구현해야 할까요? 다음 글에서는 Ajax 동기화 요청 구현에 대해 소개하겠습니다. 도움이 필요한 친구들이 참고하시면 좋겠습니다.

먼저 동기화는 단일 스레드이며 코드가 순차적으로 실행된다는 점을 알아야 합니다. js 코드가 현재 동기식 ajax 요청에 로드되면 페이지의 다른 모든 코드가 로드를 중지하고 페이지가 종료됩니다. 요청 전까지 애니메이션이 정지된 상태입니다. 실행이 완료된 후 다른 요청이 실행됩니다.

둘째, ajax는 async 값에 따라 동기식과 비동기식의 두 가지 요청 방식으로 구분된다는 점을 알아야 합니다. async 값이 true이면 비동기식 요청 방식입니다. false인 경우 동기 요청 방식이므로 ajax 동기화 요청을 구현하려면 async 값을 false로 설정하기만 하면 됩니다.

$.ajax(
  
      type:“POST”/“GET”
  
      url:"",
  
      data:{},
  
      dataType:"json",
  
      async:false,  //同步
  
     success:function(response){
  
           }     
  
   );
로그인 후 복사

Ajax 동기 요청과 비동기 요청의 차이점은 무엇이며 사용 시나리오는 무엇입니까?

이해 1:

AJAX는 async 값에 따라 동기(async = false) 및 비동기(async = true)의 두 가지 실행 방법으로 구분됩니다. 아래 W3C 튜토리얼에서는 권장됩니다. 동기화와 비동기성의 차이점을 구별해 보겠습니다.

비동기: 비동기 모드에서는 AJAX를 사용하여 요청을 보낸 후 실행해야 할 코드가 있을 수 있습니다. 현재로서는 여러 가지 이유로 인해 서버가 요청에 응답하지 않을 수 있지만 비동기 실행을 사용하기 때문에 AJAX 요청 코드가 포함된 모든 함수의 나머지 코드는 계속 실행됩니다. 처리를 위해 요청 결과를 다른 JS 함수에 넘겨주면 동시에 실행되는 두 개의 스레드와 같습니다.

동기화: 동기 모드에서는 AJAX를 사용하여 요청을 보낸 후에도 나중에 실행해야 하는 코드가 남아 있으며 처리를 위해 서버 응답을 다른 JS 함수에 넘겨주기도 하는데 현재의 코드 실행 상황입니다. is: on the server 응답이 없거나 응답 결과를 처리하는 JS 함수가 처리되어 반환되지 않은 경우 요청 코드가 포함된 함수의 나머지 코드를 실행할 수 없습니다. 단일 스레드와 마찬가지로 요청이 전송된 후 차단 상태에 들어가고 나머지 코드는 차단 상태에 도달할 때까지 계속 실행되지 않습니다.

동기 또는 비동기 모드를 선택하는 방법은 무엇입니까? 이 질문에 답하기 위해 다음과 같은 가능한 질문을 통해 답할 수 있습니다.

AJAX 요청을 보낸 후에도 비동기 요청 모드를 사용하고 처리를 넘겨주지 않으면 서버의 응답 결과를 계속 처리해야 합니다. 결과는 다른 JS 함수에 의해 처리됩니다. 이때 다음과 같은 상황이 발생할 수 있습니다. 비동기 요청에 대한 응답이 아직 도착하지 않았고 함수가 return 문 실행을 완료하여 반환 결과가 빈 문자열이 됩니다.

이해 2:

동기화: 요청을 보내고 반환을 기다린 후 다음 요청을 보냅니다.

비동기: 요청을 보내고 반환을 기다리지 않으며 언제든지 다음 요청을 보낼 수 있습니다.

동기화로 교착 상태 방지 가능 더티 데이터 읽기의 발생인 잠금은 일반적으로 특정 리소스를 공유할 때 사용됩니다. 모든 사람이 수정 권한을 갖고 동시에 파일을 수정하는 경우 한 사람이 다른 사람이 내용을 읽을 수 있습니다. 사람이 삭제되어 오류가 발생하게 됩니다. 동기화 순서대로 수정됩니다.

비동기식은 효율성을 향상시킬 수 있습니다. 요즘 CPU는 비동기식으로 처리하는 경우 여러 작업을 동시에 수행할 수 있는지 확인해야 합니다.

동기식과 비동기식의 가장 큰 차이점은 다음과 같습니다. 기다려야 하지만 그렇지 않습니다.

예를 들어 문자 메시지 보내기는 비동기식 예입니다. 개시자는 수신자의 상태에 관심이 없습니다. 수신자로부터 정보 반환을 기다릴 필요가 없으며 다음 전송이 수행될 수 있습니다.

전화는 동기화의 예입니다. 개시자는 수신자를 기다려야 하며 통화가 연결될 때까지 통신은 시작되지 않습니다. 수신자의 반품 정보를 기다려야 합니다

우리가 자주 논의하는 동기화 문제는 주로 멀티 스레드 환경의 데이터 공유 문제에서 발생합니다. 즉, 여러 스레드가 동일한 리소스에 액세스해야 하는 경우 특정 순간에 하나의 스레드만 리소스에 액세스할 수 있도록 특정 순서를 따라야 합니다. 비동기식을 사용하는 경우 프로그램 실행 결과는 다음과 같습니다. 예측할 수 없습니다. 따라서 이 경우 데이터를 동기화해야 합니다. 즉, 하나의 프로세스만 리소스에 액세스할 수 있고 다른 스레드는 기다려야 합니다.

동기화를 달성하는 메커니즘에는 주로 임계 섹션, 뮤텍스, 세마포어 및 이벤트가 포함됩니다.

중요 섹션: 다중 스레드 직렬화를 통해 공용 리소스 또는 코드 조각에 액세스합니다. 이는 빠르고 데이터 액세스 제어에 적합합니다. 언제든지 하나의 스레드만 공유 리소스에 액세스할 수 있습니다. 여러 스레드가 공용 리소스에 액세스하려고 하면 하나의 스레드가 들어간 후 공용 리소스에 액세스하려는 다른 스레드가 일시 중지되고 스레드가 떠난 후 임계 영역에 들어갈 때까지 기다립니다. 임계 섹션이 해제되면 다른 스레드가 이를 선점할 수 있습니다.

Mutex: 상호 배타적인 개체 메커니즘을 채택합니다. 상호 배타적인 개체를 소유한 스레드만 공용 리소스에 액세스할 수 있는 권한을 갖습니다. 상호 배타적인 개체가 하나만 있기 때문에 여러 스레드가 동시에 공용 리소스에 액세스하지 않도록 보장됩니다. Mutex는 동일한 애플리케이션의 공용 리소스의 안전한 공유를 실현할 수 있을 뿐만 아니라 다른 애플리케이션의 공용 리소스의 안전한 공유도 실현할 수 있습니다. Mutex는 중요한 섹션보다 더 복잡합니다. 상호 배제를 사용하면 동일한 애플리케이션의 서로 다른 스레드 간에 리소스를 안전하게 공유할 수 있을 뿐만 아니라 서로 다른 애플리케이션의 스레드 간에 리소스를 안전하게 공유할 수도 있기 때문입니다.

세마포어: 여러 스레드가 동시에 동일한 리소스에 액세스할 수 있지만 동시에 이 리소스에 액세스할 수 있는 최대 스레드 수를 제한해야 합니다. 세마포어 객체가 스레드를 동기화하는 방법은 이전 방법과 다릅니다. 신호를 통해 여러 스레드가 동시에 공유 리소스를 사용할 수 있으며 이는 운영 체제의 PV 작업과 동일합니다. 동시에 공유 자원에 접근할 수 있는 최대 스레드 수를 나타냅니다. 여러 스레드가 동시에 동일한 리소스에 액세스할 수 있지만 동시에 이 리소스에 액세스할 수 있는 최대 스레드 수를 제한해야 합니다.

이벤트: 알림 작업을 통해 스레드 동기화를 유지하고 여러 스레드의 우선순위 비교를 용이하게 합니다.

【관련 튜토리얼 추천: AJAX 동영상 튜토리얼

위 내용은 Ajax 동기식 및 비동기식이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿