0

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

  var wait;

然后,在事件侦听器内部,我为这个变量分配一个函数,然后附加一个回调函数:(我正在使用 Dojo,通过 ArcGIS Javascript API)

  wait = doThis();

  wait.addCallback(function (){

    doNextThing();

  });

doThis 从地图中删除一些图层:

 doThis(){
        var layer = map.getLayer("mapLayer");
         if (layer) {
             map.removeLayer(layer);
}

..但是当我运行它时,我收到一个错误说'等待'未定义......

我的代码中其他地方有类似的语法可以工作......是因为我在事件侦听器中分配了回调吗?如果是这样,是否有解决方法?我真的需要在 doNextThing() 开始之前完成 doThis() 。

4

1 回答 1

1

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

应该退回什么?从显示的示例中,我们只能推断从doThis()提供addCallback函数返回的对象。由于 ArcGIS 是基于 Dojo Toolkit 构建的,因此它可能是Deferred对象。返回 Deferred的是开放式问题,您的示例中没有其他线索。

于 2017-11-21T15:57:56.633 回答