source

jQuery.ajax()에서 "async: false"는 무엇을 합니까?

ittop 2023. 5. 17. 23:29
반응형

jQuery.ajax()에서 "async: false"는 무엇을 합니까?

구체적으로 기본값과 어떻게 다릅니까?async: true) ?

어떤 상황에서 명시적으로 설정하시겠습니까?async로.false그리고 그것이 페이지의 다른 사건들이 발사되는 것을 막는 것과 관련이 있습니까?

페이지의 다른 이벤트가 발생하는 것을 방지하는 것과 관련이 있습니까?

네.

비동기를 false로 설정하면 호출 중인 문이 완료되어야 함수의 다음 문을 호출할 수 있습니다.async: true를 설정하면 해당 문이 실행을 시작하고 비동기 문이 아직 완료되지 않았는지 여부에 관계없이 다음 문이 호출됩니다.

자세한 내용은 jQuery agax 성공 익명 함수 범위를 참조하십시오.

  • async:false코드가 일시 중지되었습니다. (다른 코드가 완료되기를 기다리고 있습니다.)
  • async:true코드는 계속됩니다.(아무 것도 일시 중지되지 않습니다.다른 코드가 대기 중이 아닙니다.)

이렇게 간단하게.

Async:FalseRest 코드의 실행을 보류합니다.일단 Ajax의 응답을 받으면, 그때만 나머지 코드가 실행될 것입니다.

비동기 검색을 사용 불가능으로 설정하면 요청이 완료될 때까지 스크립트가 차단됩니다.이 기능은 비동기 콜백이 더 깨끗하지만 알려진 순서대로 요청을 수행하는 데 유용합니다.

비동기를 false로 설정하면 Ajax 요청 이후의 명령이 요청이 완료될 때까지 기다려야 합니다.아래는 코드가 제대로 작동하기 위해 비동기를 false로 설정해야 하는 경우입니다.

var phpData = (function get_php_data() {
  var php_data;
  $.ajax({
    url: "http://somesite/v1/api/get_php_data",
    async: false, 
    //very important: else php_data will be returned even before we get Json from the url
    dataType: 'json',
    success: function (json) {
      php_data = json;
    }
  });
  return php_data;
})();

위의 예는 async:false의 사용법을 명확하게 설명합니다.

false로 설정하여 일단 데이터가 URL에서 검색되면 php_data를 반환한 후에만 호출됩니다.

한 가지 사용 사례는 다음을 만드는 것입니다.ajax사용자가 창을 닫거나 페이지를 나가기 전에 호출합니다.이것은 사용자가 다른 사이트로 이동하거나 브라우저를 닫기 전에 데이터베이스의 일부 임시 레코드를 삭제하는 것과 같습니다.

 $(window).unload(
        function(){
            $.ajax({
            url: 'your url',
            global: false,
            type: 'POST',
            data: {},
            async: false, //blocks window close
            success: function() {}
        });
    });

부터

https://xhr.spec.whatwg.org/ #continuous-discovery

작업자 외부의 동기식 XMLHttpRequest는 최종 사용자의 환경에 해로운 영향을 미치기 때문에 웹 플랫폼에서 제거되는 중입니다.(이 프로세스는 오랜 시간이 소요됩니다.)개발자는 JavaScript 글로벌 환경이 문서 환경인 경우 비동기 인수에 대해 false를 전달하지 않아야 합니다.사용자 에이전트는 개발자 도구에서 이러한 사용에 대해 경고할 것을 강력히 권장하며, 이 경우 InvalidAccessError 예외를 시도할 수 있습니다.향후 방향은 작업자 스레드에서만 XMLHttpRequests를 허용하는 것입니다.이 메시지는 그러한 효과에 대한 경고입니다.

언급URL : https://stackoverflow.com/questions/1478295/what-does-async-false-do-in-jquery-ajax

반응형