JavaScript : 기능 종료에서 동작을 트리거합니다
-
02-07-2019 - |
문제
종료 할 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);
}
다른 팁
동기식 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는 사용자에게 무슨 일이 일어나고 있음을 알려줍니다.