附加到回调函数(Javascript / Dojo)时,变量是未定义的

时间:2014-08-26 14:49:47

标签: javascript callback scope global-variables arcgis-js-api

我在全局范围内声明了这个变量:

  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()。

1 个答案:

答案 0 :(得分:1)

在JavaScript函数中,总是返回值,如果你在函数内部跳过return关键字,它会自动返回undefined。在您的doThis代码中没有返回语句。这就是wait未定义并在下一步失败的原因。

应该归还什么?从显示的示例中,我们只能推断出从doThis()提供addCallback函数返回的对象。由于ArcGIS是基于Dojo Toolkit构建的,因此它可能是WebDriver spec对象。 Deferred是一个悬而未决的问题,你的例子没有其他线索。