2011-08-24 3 views
0

좋아요, 제목이 꽤 복잡하다는 것을 압니다. 그러나 한 줄로도 질문하기가 어렵습니다. 죄송합니다.다른 배열에서 같은 항목을 가진 항목을 얻는 가장 좋은 방법은 무엇입니까

목표 : 모든 모듈을 사용할 수있을 때 콜백을 실행하고 싶습니다. 문제점 : 가장 빠른 방법은 무엇입니까? 예 : 문제는 함수에서 시작

이 같은 모든 새로운 추가 개체를 얻는다 "runCallbacks"

callbacks = [[[callbackFunction],['loadedItems'],['notLoadedItems']]] 
       |-----------it's a single callback--------------------| 

좋은 있습니다

runCallbacks(newItems/*as array ['a','b','c'];*/){ 
    // now I would need to understand the dependencies of the callbacks 
    // each callback might depend on one or more objects 
    // iNeed(['a','b'], toRunThis); 
    //   |   |-callback to run when those are ready 
    //   |-are the dependencies 

은 제가의 생각하는이입니다 성능이나 더 좋은 아이디어가 있습니까? 감사

또 다른 예

this.use(['a', 'b'], function(){/* do something with 'a' and 'b' only when are ready */}) 
use: function(paths, callback, target/*not used in this case*/){ 
    // "a", "b", 'c' module is available 
    // "d", 'e' module is not available 
    this.callbacks.push([[target], ['a', 'b', 'c'], ['d', 'e']]); 
    //        |  |-not loaded 
    //        |-loaded 
} 

// then an object might be added 
this.add({...}) 

// then will check if this new object may make some callbacks to run 
function(newPaths/* ['d'] */){ 
    // loop all callbacks items 
    // remove items from [not loaded array] and put to [loaded array] if 
    // exists in newPaths 
    // in this case the callback already has: a,b,c; but misses: d,e; 
    // now it will add "d" to the loaded array 
    // and now only miss the "e" path 

때문에 콜백이 필요한 경우 "A"와 "B"가 아니라 존재는 나는 "A"와 "B"모듈을 추가 모두 준비가되었을 때의 콜백을 저장 마녀 콜백이 실행 준비가되었음을 알고 싶습니다.

콜백은 그렇지가 여러 의존성 은 "은"모듈은 당신이 jQuery를 실행하는 경우 $ .when를 보라

+0

'a', 'b'및 'c'요소는 사용자가 이야기하는 모듈입니까? – Jad

+0

일반 교차가 필요합니까? 또는 질문은 무엇입니까? 당신은 분명히해야합니다. – jishi

+0

@Jad : 예, 모듈입니다. –

답변

1

복잡 조금 이유있어 여러 콜백 에 의해 사용될 수있을 수 있습니다 promises.js와 같은 라이브러리 (explination here : http://blogs.msdn.com/b/rbuckton/archive/2010/01/29/promises-and-futures-in-javascript.aspx). 아이디어는 의존성이 준비되고 해결 될 때 사건을 촉발시키는 약속입니다.

+0

프레임 워크의 핵심은 여기에있는 아이디어가 빠르고 단순하며 낮은 수준이어야한다는 것입니다. 이 경우에는 필요하지 않기 때문에 이벤트 시스템을 구현할 수 없습니다. 이 경우 하드 코드 된 것이 더 좋습니다. –

관련 문제