Requirejs 需要了解dojo中的AMD行为

Requirejs 需要了解dojo中的AMD行为,requirejs,dojo,amd,Requirejs,Dojo,Amd,我需要了解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

我需要了解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  
    }

提前谢谢。

不。。。一旦加载了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  
    }
});

谢谢…实际上,如果我将函数添加到AMD中,我需要全局公开函数名。我无法访问该函数。是否有任何方法可以做到这一点,我也尝试在模块本身中添加return语句2,但它不返回any值。您能帮我一下吗?在我的代码中,我添加了parseOnLoad:true和asyn:true,但是在加载声明性小部件之前执行ready回调。在这方面你能帮我吗?你的电话在哪里?我在你的代码里看不到。。。而且它是异步的:true,而不是asyn:true。也许你应该单独提出一个问题,因为它看起来是一个不同的问题。。。