[jquery] jQuery.ajax ()에서“async : false”는 무엇입니까?

특히, 기본 ( async: true) 과 어떻게 다릅니 까?

어떤 상황에서 나는 명시 적으로 설정하려는 것 async까지 false, 그리고 발사에서 페이지에 다른 이벤트를 방지과 함께 할 수있는 뭔가가 무엇입니까?



답변

페이지의 다른 이벤트가 실행되지 않도록하는 것과 관련이 있습니까?

예.

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

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


답변

  • async:false= 코드가 일시 중지되었습니다 . ( 이 코드가 끝나기기다리는 다른 코드 )
  • async:true= 코드가 계속되었습니다 . (아무것도 멈추지 않습니다. 다른 코드는 기다리지 않습니다 .)

이처럼 간단합니다.


답변

Async:False나머지 코드의 실행을 보류합니다. 일단 ajax의 응답을 받으면 나머지 코드가 실행됩니다.


답변

비동기 검색을 비활성화하면 요청이 이행 될 때까지 스크립트가 차단됩니다. 비동기 콜백이 더 깨끗하다는 것을 알지만 알려진 순서로 요청 시퀀스를 수행하는 데 유용합니다.


답변

한 가지 사용 사례는 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/#synchronous-flag

작업자 외부의 동기 XMLHttpRequest는 최종 사용자의 경험에 해로운 영향을 미치므로 웹 플랫폼에서 제거되고 있습니다. (이 과정은 오랜 시간이 걸린다.) JavaScript 전역 환경이 문서 환경 인 경우 개발자는 비동기 인수에 대해 false를 전달해서는 안된다. 사용자 에이전트는 개발자 도구에서의 이러한 사용에 대해 경고 할 것을 강력히 권장하며 InvalidAccessError 예외가 발생하면이를 실험 해 볼 수 있습니다. 미래의 방향은 작업자 스레드에서만 XMLHttpRequests를 허용하는 것입니다. 메시지는 그러한 영향을 경고하기위한 것입니다.


답변

async를 false로 설정하면 ajax 요청 다음의 지시 사항은 요청이 완료 될 때까지 기다려야 함을 의미합니다. 다음은 코드가 제대로 작동하기 위해 async를 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반환 된 후에 만 확인 되도록했다; 라는