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返回之前被赋值.但是我该如何解决呢?

解决方法:

添加自定义回调:

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
    });

}

相关文章

我有一个网格,可以根据更大的树结构编辑小块数据.为了更容易...
我即将开始开发一款教育性的视频游戏.我已经决定以一种我可以...
我正在使用带有Grails2.3.9的Dojo1.9.DojoNumberTextBox小部...
1.引言鉴于个人需求的转变,本系列将记录自学arcgisapiforja...
我正在阅读使用dojo’sdeclare进行类创建的语法.描述令人困惑...
我的团队由更多的java人员和JavaScript经验丰富组成.我知道这...