2012-08-31 2 views
1

내 코드에서 함수가 비동기식인지 테스트하고, 그렇다면 콜백 함수를 사용하고 싶습니다. 하지만 그렇지 않다면 다음 함수를 수동으로 호출 할 것입니다. 그렇다면 함수가 비동기식인지 테스트하는 방법이 있습니까? 그리고 그렇지 않다면 모든 비동기 jQuery 함수의 목록을 어디에서 찾을 수 있습니까?jQuery - 함수가 비동기식인지 아닌지 테스트 할 수 있습니까?

if (isAsynchronous(fn)) { 
    args.push(function() { alert('callback!'); }); 
    this.fn.apply(this, args); 
} else { 
    this.fn.apply(this, args); 
    alert('synchronous'); 
} 

그렇게 할 수없는 경우 목록을 보유하는 것이 가장 좋은 방법입니다.

var asynchs = { 
    animate: true, 
    fadeIn: true 
    //etc... 
}; 

if (asynchs[fn]) { 
    args.push(function() {alert('callback!'); }); 
    this.fn.apply(this, args); 
} else { 
    this.fn.apply(this, args); 
    alert('synchronous'); 
} 
+0

네, 문서를 읽어야합니다 :) – PhD

+0

@PhD - 하하 나는 온라인 목록을 찾지 못했고 아무 것도 발견하지 못했고 문서를 읽기 시작했습니다. 그런 다음 생각이 들었습니다. '어쩌면 비동기인지 테스트 할 방법이 있을지도 모릅니다.'그래서 나는 그 모든 일을하기 전에 물어볼 것이라고 생각했습니다. :) – Aust

+0

_ "모든 비동기 jQuery 함수의 목록을 어디서 찾을 수 있습니까?"- _ 매개 변수로 콜백을 허용하는 모든 jQuery 애니메이션 또는 Ajax 함수가 아닐까요? – nnnnnn

답변

2

함수가 동기식인지 비동기식인지를 결정하는 프로그램 방식이 없습니다. 실제로 함수가 전달 된 내용에 따라 함수가 동기식 또는 비동기식 일 수 있습니다. $.ajax()처럼 어떤 것인지를 결정하는 매개 변수를 전달할 수 있습니다.

그래서 함수가 무엇인지 알고 싶다면 의사 또는 코드를 읽어야합니다.

일반적으로 함수가 "완료"콜백 또는 이와 유사한 것을 제공하는 경우 함수가 비동기식이거나 비동기식 옵션을 가지고 있는지 확인하고 문서에서 확인하십시오. jQuery 메소드에 완료 콜백이 없으면 비동기 적이 지 않습니다.

$.each()과 같은 다른 것들은 구현의 일부로 콜백을 사용하며 ("완료"콜백이 아니며) 비동기 적이 아닙니다.

또한 애니메이션이나 네트워킹 또는 일정 시간 동안 기다리는 모든 메소드가 비동기적일 수 있습니다. jquery 문서는 정말 잘 쓰여져 있기 때문에 확실하지 않다면 빨리 살펴볼 수 있습니다.

관련 문제