在我的模块中,我想推迟“定义”调用,但是一旦加载文件,RequireJS就会运行回调,而不是“定义”...例如:
a.js:
require(['b'], function(b){
console.log(b);
});
b.js:
define({'foo':'bar'});
这符合预期的写作对象{foo:bar}。 但是,如果我将“定义”移动到延迟函数:
b.js:
setTimeout(function(){
define({'foo':'bar'});
}, 1000);
然后console.log(b)写“null”。
怎么了?
答案 0 :(得分:0)
我认为任何延迟或延迟都应该发生在define函数中,或者您可以使用这样的回调模式:
//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;
});
使用此模式,您可以在a.js中设置回调函数,以处理来自b.js的延迟回答。
希望这会对你有所帮助。