문제

종료 할 JavaScript 기능을들을 수있는 방법이 있습니까? 함수가 완료되었을 때 설정할 수있는 트리거?

Ajax 객체가 DB에서 데이터를 검색하는 동안 사용자 인터페이스 난독 화 기술 (Blockui)을 사용하려고하지만 기능 호출이 끝날 때도 기능이 반드시 실행되는 것은 아닙니다.

예시:

function doStuff() {
  blockUI();
  ajaxCall();
  unblockUI();
};

Unblockui를 발사하기 전에 Dostuff가 AjaxCall이 완료 될 수있는 방법이 있습니까? 그대로, 함수를 선형으로 처리하여 각 객체를 순서대로 호출 한 다음 별도의 스레드가 스폰되어 각 스레드를 완성합니다. 따라서 Ajax 호출은 완료하는 데 10-15 초가 걸릴 수 있지만 함수의 선형 실행으로 인해 스플릿 초만 사용자를 차단하고 있습니다.

이 주위에는 우아한 방법이 덜 있습니다 ... Ajax 함수에 의해 설정된 반환 값이 True 또는 그 특성으로 설정된 경우에만 루프를 종료하도록합니다. 그러나 그것은 불필요하게 복잡하고 비효율적 인 것 같습니다.

도움이 되었습니까?

해결책

그러나 Ajax 루틴을 달성하고 있습니다. 필요한 것은 완료되면 실행되는 "콜백"기능입니다.

function ajaxCall(callback){
    //do ajax stuff...
    callback();
}

그 다음에:

function doStuff(){
    blockUI();
    ajaxCall(unblockUI);
}

다른 팁

AJAX 호출은 콜백 함수를 지정해야합니다. 콜백 내에서 unblockui를 호출 할 수 있습니다.

Sajax Ajax 호출을 수행하는 방법에 더 많은 도움이되는 간단한 Ajax 라이브러리입니다.

또한 있습니다 다른 게시물 그것은 당신이 찾고있는 것을 설명합니다.

동기식 XHR을 수행 할 수 있습니다. 이로 인해 통화 기간 동안 전체 UI 블록이 발생합니다 (시간이 얼마나 걸리든간에).

응답이 처리 된 후 호출 할 콜백 함수를 지정하는 것과 같이 Asynchronus 흐름과 호환되도록 프로그램 흐름을 재 설계해야합니다. 프로토 타입이나 jQuery 또는 ...이이를 달성하는 방법을 확인하십시오.

대답은 간단합니다. ajax 요청이 결과를 반환하면 jQuery를 사용하여 다음과 같이 할 수 있습니다.

function doStuff(){

    blockUI();

    jQuery.ajax({
        url: "example.com",
        type: "POST",           //you can use GET or POST
        success: function(){

            unblockUI();
        }
    });
}

정보가 DB에서 가져 오는 동안 사용자가 기다리기를 원한다고 생각합니다. 데이터베이스에서 AJAX를 호출 할 때 내가하는 일은 "Geting It ..."라는 애니메이션 GIF를 표시하는 것입니다. - 정보가 웹 페이지에 검색되고 표시 될 때까지 지속적으로 플래시됩니다. 정보가 표시되면 애니메이션 GIF가 꺼지거나 숨겨지고 초점이 표시되는 새 정보로 이동합니다. 애니메이션 GIF는 사용자에게 무슨 일이 일어나고 있음을 알려줍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top