に定義する私は、「定義」コールを延期したいのですが、ファイルに一度、コールバックを実行しているRequireJSがロードされますRequireJSは:たとえば...「定義されて」いないとき、私のモジュールでは、コールバック
a.jsを:
require(['b'], function(b){
console.log(b);
});
b.js:
define({'foo':'bar'});
これは予想される書き込み対象{FOO:バー}として働きます。 しかし、私が移動した場合、繰延機能に "定義":
b.js:
setTimeout(function(){
define({'foo':'bar'});
}, 1000);
を、次に(B)にconsole.logは "ヌル" を書き込みます。
どういうところが間違っていますか?あなたが処理するa.jsにコールバック関数を設定することができ、このパターンを使用して
//a.js
require(['b'], function(b){
b.getData(
function(data) {
console.log(data);
}
);
});
//b.js
define(function(){
this.getData = function(callback) {
setTimeout(function(_callback){
return function() {
_callback({'foo':'bar'});
}
}(callback), 1000);
}
return this;
});
:
さて、あなたは定義を1秒遅らせる必要があります、そして、そのタイマが期限切れになる前にそれを要求しようとしています。定義モジュールを遅らせている理由を尋ねることはできますか? –
これは単なるケースの1つです。モジュールが準備完了になるために必要な、ajax要求またはその他の非同期処理によって遅延が発生する可能性があります。 – Buncha
Ajax /非同期ロジックを担当するモジュールを作成する方が意味があります。そのようにすれば、ただ必要とすることができ、それが提供するメソッドを使って非同期のものをトリガーすることができます。 –