0

到目前为止,我假设对 AUI 的调用将在嵌入的 JavaScript 中同步处理。现在我注意到以下行为:

    Liferay.on('allPortletsReady',
        function() {
           AUI().use('node', function(A) {
                // (1) --> set some global var here
           });
           // (2) --> use global var here
        }
    );

我期望执行顺序 (1) (2)

我得到 (2) (2) (2) (1) (1) (1)

我可以忍受三重执行,但我无法解释相反的顺序。

通过在 AUI 沙箱内移动 (2) 可以轻松解决该问题,但我仍然想知道......

4

1 回答 1

0

首先,.use()是异步调用的。调用时AUI().use('node', function(A) {...});,必须在调用 () 内部的函数之前加载并附加节点模块function(A) {...}

所以发生的事情是,在加载节点模块时,调用后面的代码行use(),当模块成功加载并附加时,函数 ( function(A) {...}) 被调用。

请参阅.use()此处的文档:http: //yuilibrary.com/yui/docs/yui/#understanding-yuiuse

(AUI 是 YUI 的扩展)

这也可能有帮助:YUI3 和 AlloyUI 入门

于 2013-08-12T10:20:56.333 回答