2012-07-03 56 views
0

因此,我使用Dojo 1.7'require'语法来触发两个模块。然而,这些模块被调用的顺序非常重要,因为一个模块可以处理另一个模块的结果。如何确保Dojo模块按特定顺序执行?

我不能只是把它们放在程序上......我如何确保它们按顺序开火?

require(['modules/createElements', 'dojo/domReady!'], 
    function(createElements) { 
     createElements.go(); 
}); 

require(['modules/modifyElements', 'dojo/domReady!'], 
    function(modifyElements) { 
     // This is supposed to modify the elements created 
     // by the createElements module, but it usually fires 
     // _before_ the elements have been created! 
     modifyElements.go(); 
}); 

在理想情况下,我想在两个模块是更多或更少的独立海誓山盟(例如,使得可以modifyElements由任何来源创建的元素作用),在createElements末尾,以便主叫modifyElements不可取的。

+0

发现这对我的作品,而是一个答案,如果任何人有替代品或更好的建议,请把它们留在这里! :) – Ipsquiggle

回答

0

啊哈,我意识到张贴此之后的时刻,我可以做我所有的工作从单一的require内,像这样:

require(['modules/createElements', 'modules/modifyElements', 'dojo/domReady!'], 
    function(createElements, modifyElements) { 
     createElements.go(); 
     modifyElements.go(); 
}); 
+2

确实。这并不保证它们会按照您指定的顺序加载,至少如果您将加载程序设置为异步模式,但回调函数只会在所有模块加载后才执行。 – Philippe