在我的模块中,我想推迟“定义”调用,但是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“。
怎么了?
发布于 2012-05-08 17:25:04
我认为任何延迟或延迟都应该发生在定义函数中,或者您可以使用如下回调模式:
//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的延迟答复。
希望这能帮到你。
https://stackoverflow.com/questions/10469605
复制相似问题