如何从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返回之前分配的。但是我该如何解决它呢?
答案 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
});
}