RequireJS require()是否具有相同的依赖关系,保证按顺序执行?

时间:2015-05-29 22:11:58

标签: javascript requirejs

我有一个模块foo,它返回一个单例对象。我想在我的页面的一个部分上对此模块执行一些配置/设置,然后再使用它。 (或者说,配置可能出现在某些共享局部视图中)。

require(['foo'], function(Foo) {
    Foo.value = 'abc';
});

// Then, later on on the same page...

require(['foo'], function(Foo) {
    alert ('Foo value is ' + Foo.value);
});

因此,尽管RequireJS可能会根据加载依赖项的时间执行require乱序,但是我可以确定第二次调用只会在第一次调用完成后才会发生,因为它们具有相同的依赖关系吗?

如果没有,有什么更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:0)

直接回答问题:
不,不保证具有相同依赖关系的模块按顺序执行。

来自requireJS docs

  

使用exports为可用模块创建一个空对象   立即供其他模块参考

但更重要的是:

  

循环依赖很少见,通常是您可能想要的标志   重新考虑设计

Source,因为这个问题非常相似。