2013-08-26 3 views
0

자바 스크립트 콜백 함수가 포함 된 스크립트 파일을 제공하는 외부 API가 있습니다. 함수가 내 코드에 구현되어 있다고 가정합니다. 나는 requireJS 모듈이 포장을 좋아하지만 그것에 대해 이동하는 방법을 너무 잘 모르겠습니다 것콜백 만 포함하는 스크립트에 대한 JS 심입니다.

aCallback({json:'stuff'}); 

: 예를 들어, 다음과 같은 내용으로 JS 파일

.

나는 다음과 같은 심 시도 :

define("my-wrapper", [], function() { 
     return function(data){ console.log(data); } 
    } 
); 
var require = { 
    shim: { 
     "my-wrapper": {exports: "aCallback"}, 
     "http://api.con/service": ["my-wrapper"] 
    } 
}; 

require(["http://api.con/service"], function (service) {}); 

을하지만 aCallback가 정의되지 않은 서비스를로드의 시도 할 때를 말한다. 나는 무엇이 잘못 되었는가? 이런 종류의 스크립트를 감싸는 더 좋은 방법이 있습니까?

+0

그래서 서비스는'aCallback'이라는 전역 함수를 기대하고 있습니까? –

+0

@SimonSmith는 aCallback이라는 함수를 기대하고 있습니다. 필요한 경우로드하는 것으로 가정하면 로컬 네임 스페이스에 있어야합니다. 이게 맞지 않아? 그것의 데이터를 제공하는 조금 이상한 방법이지만, 나는 API를 제어 할 수 없다. –

답변

0

동일한 범위에 존재하도록 shim을 사용하는 대신 종속성으로 콜백을 요구할 수 있습니다.

require(["http://api.con/service", "my-wrapper"], function (service, aCallback) { 

}); 

서비스가 콜백을 소비하는 방법에 따라 달라집니다.

+0

그게 작동하지 않는 것 같은데, 나는'aCallback is not defined'라는 동일한 에러를 얻습니다. 실제 서비스는 매우 간단합니다. 단지'aCallback ({json : 'stuff'}); 그것의 적재 된 –

관련 문제