定义包含延迟对象

时间:2014-04-26 16:32:39

标签: dojo

关于需要指导,Dojo官方文档说:

  

如果提供了配置对象,则会按照配置中的描述将其传递给配置API。接下来,解析依赖项中列出的依赖项(如果有)。 >最后,使用以> arguments

传入的已解析依赖项执行回调(如果有)

使用我的示例(下面),我想在主程序中使用users.json数据,但是不执行被调用模块(monModule.js)的回调,我获得了一个空对象。 我该怎么办? 谢谢你。

1)主程序(摘录)

<script type="text/javascript">
    require(["monModule"],function(monModule){
        console.log(monModule);// returns {}
    });
</script> 

2)被叫模块(monModule.js):

define(["dojo/request/xhr","dojo/json"],function(xhr,json){
    xhr("users.json",{handleAs:"JSON"}).
    then(function(data){console.log(return data;});
});

3)users.json

[
{‘ id’:"id1",’nom’:"nom1"},
{ ‘id’:"id2",’nom’:"nom2"},
{‘id’:"id3",’nom’:"nom3"}
]

1 个答案:

答案 0 :(得分:0)

当时的调用也是异步的,所以这就是你要回到空对象的原因。你将不得不在你的模块中添加另一个延迟它来运行,然后在你的代码中添加

define( ["dojo/request/xhr","dojo/json" , "dojo/Deferred"], function( xhr, json , deferred) { 


                var def = new deferred();
                xhr("users.json", { handleAs :"JSON" }).then( 
                    function( data ) { 
                        return def.resolve(data);
                    }
                );


        return def.promise;;
});

在Code中通过

获取它
  require(["custom/monModule"],function(monModule){
        monModule.then(function(users){
            console.log(users); 
        });

    });