RequireJS - 返回延迟加载静态文件的内容

时间:2014-02-28 03:05:19

标签: javascript requirejs

我正在编写一个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;
});

知道我做错了什么吗?

1 个答案:

答案 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;
});