我正在编写一个util模块,它包含一个延迟加载json文件并返回内容的函数,但我似乎无法使其工作......
define([
'require'
], function (require) {
var util = {
jsonData: [],
getJsonData: function () {
require(['require', 'text!dummyData.json'], _.bind(function (require) {
this.jsonData.concat(JSON.parse(require('text!dummyData.json')));
}, this));
return this.jsonData;
}
};
return util;
});
知道我做错了什么吗?
答案 0 :(得分:0)
它无效,因为您正在尝试(并失败){em>异步函数中的return
内容。对具有依赖关系列表作为第一个参数的require
的所有调用都是异步的。如果您在自己的函数中调用require
,并且您的函数旨在提供取决于此require
调用的结果,那么您的函数也异步。< / p>
您需要类似下面的代码:getJsonData
接受回调并在拥有数据后调用它。我还更改了require('text!text!dummyData.json')
以删除其中一个text!
前缀,这些前缀在那里没有业务。
define([
'require'
], function (require) {
var util = {
jsonData: [],
getJsonData: function (callback) {
require(['require', 'text!dummyData.json'], _.bind(function (require) {
this.jsonData.concat(JSON.parse(require('text!dummyData.json')));
callback(this.jsonData);
}, this));
}
};
return util;
});