0

JavaScriptコールバック関数を含むスクリプトファイルを提供する外部APIがあります。関数がコードに実装されていることを前提としています。

たとえば、次の内容の JS ファイル:

aCallback({json:'stuff'});

これをrequireJSモジュールにラップしたいのですが、どうすればよいかわかりません。

次のシムを試しました:

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未定義のサービスをロードしようとすると表示されます。私は何を間違えたのですか?この種のスクリプトをラップするより良い方法はありますか?

4

1 に答える 1

0

shim同じスコープに存在するように、コールバックを使用する代わりに依存関係として要求することをお勧めします。

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

});

ただし、サービスがコールバックをどのように消費するかによって異なります。

于 2013-08-26T13:05:20.110 に答える