2011-03-05 3 views
6

2 개의 개별 $.getScript 호출이 성공적으로로드 된 후 실행하려는 콜백 함수가 있습니다.JavaScript/jQuery를 사용한 이중 또는 다중 콜백 디자인 패턴

나는 아래의 디자인을 사용 해요,하지만 지저분한 느낌, 그리고 명명 된 기능의 사용이

var foo_ready = false; 
var bar_ready = false; 
var dual_callback = function(){ 
    if(foo_ready && bar_ready) 
    { 
     //do things 
    } 
}; 

jQuery.getScript('/foo.js', function(){ 
     foo_ready = true; 
     dual_callback(); 
    }); 
jQuery.getScript('/bar.js', function(){ 
     bar_ready = true; 
     dual_callback(); 
    }); 

하나의 콜백을 수행 할 수있는 더 나은 또는 더 우아한 방법이 매우-jQuery를가되지 않은 느낌 여러 비동기 호출이 완료된 후? 당신이있는 경우

+0

. 나는이 코드를보고 곧바로 그것을 이해했다. 남자들은 바보 같은 포스터 barf와 비교해 그들의 질문에 매끄럽고 우아하다. 나는 "의도대로 작동하지 않을 것이다"라고 말하고 싶습니다. – jpsimons

답변

12

는 jQuery를 사용하면이 작업을 수행 할 수 있습니다 1.5.1 :

$.when($.getScript('/foo.js'), $.getScript('/bar.js')).done(function(){ 
    // this is called when both are done. 
}); 

체크 아웃 당신은 단지 그것을 더러워 보이는 생각 Deferred Object$.when()

+0

매우 근사합니다. +1. 나는'$ .when()'에 대해 아직 읽지 않았다; 내 특별한 목적을 위해 1.5.1에 ​​액세스 할 수 없습니다. 나는 지금 1.4.2의 몰락에 갇혀있다;) – Yahel