我在全局范围内声明了这个变量:
var wait;
然后,在事件监听器内部,我为这个变量分配一个函数,然后附加一个回调函数:(我正在使用Dojo,通过ArcGIS Javascript API)
wait = doThis();
wait.addCallback(function (){
doNextThing();
});
这会从地图中删除一些图层:
doThis(){
var layer = map.getLayer("mapLayer");
if (layer) {
map.removeLayer(layer);
}
..但是当我运行它时,我收到错误,说“等待”未定义......
我在我的代码中的其他地方有类似的语法...是因为我在事件监听器中分配了回调?如果是这样,有解决方法吗?我真的需要在doNextThing()开始之前完成doThis()。
答案 0 :(得分:1)
在JavaScript函数中,总是返回值,如果你在函数内部跳过return
关键字,它会自动返回undefined
。在您的doThis
代码中没有返回语句。这就是wait
未定义并在下一步失败的原因。
应该归还什么?从显示的示例中,我们只能推断出从doThis()
提供addCallback
函数返回的对象。由于ArcGIS是基于Dojo Toolkit构建的,因此它可能是WebDriver spec对象。 Deferred是一个悬而未决的问题,你的例子没有其他线索。