Meteor.setTimeout函数不起作用

时间:2015-08-11 17:02:12

标签: javascript meteor settimeout

我已经在互联网上查了一段时间,试图弄清楚我的代码有什么问题,而且无法找到合适的答案。

Template.map.onCreated(function() {
    Meteor.setTimeout(function() {
      GoogleMaps.ready('exampleMap', function(map) {
        var marker = new google.maps.Marker({
          position: map.options.center,
          map: map.instance
        });
      });
    }, 2000);
  });

我只是试图设置2秒延迟GoogleMap功能触发,但它不起作用。我已经尝试了很多各种各样的事情,例如将var声明为我的函数然后匿名触发setTimeout函数等等......但是没有运气......我没有从控制台收到错误所以我觉得我的代码编写得很好,而Meteor文档并没有提供有关setTimeout函数的大量信息。

这也不起作用:

Template.map.onRendered(function() {
  Tracker.afterFlush(function(){
    GoogleMaps.ready('exampleMap', function(map) {
      var marker = new google.maps.Marker({
        position: map.options.center,
        map: map.instance
      });
    });
  });
});

1 个答案:

答案 0 :(得分:-1)

将setTimeout中的代码转换为外部函数,如下所示:

function prepareMap() {
      GoogleMaps.ready('exampleMap', function(map) {
        var marker = new google.maps.Marker({
          position: map.options.center,
          map: map.instance
        });
      });
    }
 }

在setTimeout 中调用函数,不带括号,如下所示:

Template.map.onCreated(function() {
   setTimeout(prepareMap, 2000);
});

如果使用括号调用函数,则函数将立即执行,而不会在timeOut中指定延迟。