0

我需要了解 AMD 在 dojo 中的一种行为。在下面的示例中,将始终首先执行语句 1,然后如果准备好或 domReady,则执行语句 2!不曾用过?

 function test() { 
    var abc;  
    require(["dijit/registry"], function(registry){ 
    //some modification of abc variable.
     console.log("statement 1");----> statement 1 
    });  
    return abc;----> statement 2  
    }

提前致谢。

4

1 回答 1

1

不...一旦加载了 dijit/registry,将触发语句 1。无法保证当您到达语句 2 时会出现这种情况。

只有您的 require 回调中的语句才能确保按顺序触发。

即使您使用 ready 或 domReady,上述内容也是有效的!

您确实尝试以下方法来全局公开您的功能:

require(["dojo/_base/kernel", "dijit/registry"], function(kernel, registry){
    kernel.global.test = function(){
        var abc;
        //some modification of abc variable.
        console.log("statement 1");----> statement 1
        return abc;----> statement 2  
    }
});
于 2013-06-25T16:11:38.247 回答