延迟requirejs模块实例化,直到依赖关系准备就绪

时间:2015-08-31 17:31:07

标签: javascript requirejs

我想知道是否有一种方法只有当所有的依赖项都准备就绪时才能实例化requirejs模块。我准备好了什么意思?

我们说我有模块a和模块b。模块a取决于b。模块b将在获取某些数据时准备就绪。

//inside module b
define([], function () { //fetch data });

//inside module a
define(['b'], function (b) { //do something with b });

是否可以仅在a获取所需数据(或完成其他异步操作)时运行模块b回调?

例如,我想从模块b返回一个promise,表示requirejs需要等到这个promise才能解决才能继续。

我想要这个,因为我想避免检查模块b是否在每个依赖它的模块中准备就绪。

1 个答案:

答案 0 :(得分:-1)

未经验证:我认为您可以通过嵌套异步定义来实现这一目标:

//inside module b
define("bOuter", [], function () { 
   // fetch data
   fetchDataAsync(function(result) { 
      define("b", [], function ()
      { 
         // real module "b" here.
      });
    });
});