Dojo从require内返回值

时间:2013-08-23 12:46:47

标签: javascript dojo require

如何从dojo require块中返回值?说我有这样的设置:

<div class = "people">
    <span class = "name"> Joe Bloggs </span> the Baker <br />
    <span class = "name"> John Smith </span> the Chef <br />
</div>


function getNames () {
    require(["dojo/query", "dojo/domReady!"], function(query) {

        var names = [];
        query (".name").forEach (function (node) {
            names.push (node.innerHTML);
        });

        return names;
    });
}

function doSomethingWithNames () {

    var names = getNames (); // names is always undefined

}

我知道它为什么会发生 - require块是异步执行的,所以doSomethingWithNames中的变量名是在getNames返回之前分配的。但是我该如何解决它呢?

1 个答案:

答案 0 :(得分:4)

添加自定义回调:

function getNames (callback) {
    require(["dojo/query", "dojo/domReady!"], function(query) {

        var names = [];
        query (".name").forEach (function (node) {
            names.push (node.innerHTML);
        });

        callback(names);
    });
}

function doSomethingWithNames () {

    getNames (function(names) {
        //do your stuff with the return here
        //names will now be populated
    });

}