>  기사  >  웹 프론트엔드  >  Ajax 요청을 비동기식에서 동기식으로 변경하는 방법

Ajax 요청을 비동기식에서 동기식으로 변경하는 방법

青灯夜游
青灯夜游원래의
2022-01-17 16:28:326190검색

AJAX는 서로 다른 비동기 값에 따라 동기와 비동기로 나눌 수 있습니다. 기본적으로 비동기 값은 true(비동기 제출)입니다. 비동기를 동기로 변경하려면 비동기 값을 false로 설정하기만 하면 됩니다.

Ajax 요청을 비동기식에서 동기식으로 변경하는 방법

이 튜토리얼의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.

AJAX는 async 값에 따라 동기(async = false)와 비동기(async = true)로 구분됩니다.

기본적으로 async는 true(비동기 제출)입니다.

동기화하려면 async를 false로 설정하세요.

예:

AJAX를 사용할 때 가끔 한 인터페이스에서 데이터에 해당하는 배열과 ID를 가져온 다음 다른 인터페이스에서 데이터를 가져와야 하는 경우가 있습니다.

$.get(url_1, function (data) {
        var dom = [];
        for (var i = 0; i < data.length; i++) {
            var item = data[i];
            
            //两个url不一致,根据id查找另一个表
            $.get(url_2, function (data) {
                var item_result = data;
                dom.push("<div> item_result.id</div>");    
            });
           
        }
        $("#id").empty().append(dom.join(&#39;&#39;));      
    });

하지만. 이때 종종 배열이 지워진 후 데이터가 기록되지 않는 문제가 발생하는데, 초보자가 종종 인터페이스가 잘못되었다고 착각하는 경우는 $get()과 같은 Ajax 메소드 때문입니다. ) 인터페이스를 호출할 때 시간이 걸리므로 푸시가 완료되기 전에 완료됩니다. 추가 동작이 발생합니다. 즉, 이때 배열이 지워지지만 이때 dom 배열에서 조인으로 읽은 데이터는 없습니다. 따라서 루프 내 Ajax를 동기화하려면 코드 수정이 필요합니다.

$.get(url_1, function (data) {
        var dom = [];
        for (var i = 0; i < data.length; i++) {
            var item = data[i];
            
            //在第二次的Ajax前将异步改同步
            $.ajaxSettings.async = false;

            //两个url不一致,根据id查找另一个表
            $.get(url_2, function (data) {
                var item_result = data;
                dom.push("<div> item_result.id</div>");    
            });
           
            //注意在ajax中的push完成后,将其改回异步
            $.ajaxSettings.async = true;

        }
        $("#id").empty().append(dom.join(&#39;&#39;));      
    });

[관련 튜토리얼 권장 사항 :

AJAX 비디오 튜토리얼

]

위 내용은 Ajax 요청을 비동기식에서 동기식으로 변경하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.