gpt4 book ai didi

javascript - RequireJS:在回调中定义

转载 作者:行者123 更新时间:2023-12-03 04:02:11 31 4
gpt4 key购买 nike

在我的模块中,我想推迟“定义”调用,但 RequireJS 在文件加载后运行回调,而不是在“定义”时运行回调...例如:

a.js:

require(['b'], function(b){
console.log(b);
});

b.js:

define({'foo':'bar'});

这与预期的写入对象 {foo:bar} 一样工作。但是如果我将“define”移至延迟函数:

b.js:

setTimeout(function(){
define({'foo':'bar'});
}, 1000);

然后console.log(b)写入“null”。

出了什么问题?

最佳答案

我认为任何延迟或推迟都应该发生在定义函数内,或者您可以使用像这样的回调模式:

//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 的延迟响应。

希望这对您有帮助。

关于javascript - RequireJS:在回调中定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10469605/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com