我在使用 setTimeout 时遇到问题。我已经使用它很多次了,它总是按照我期望的方式工作。即使我将代码放在一个单独的函数中它也可以工作,但在这种情况下它有一个奇怪的行为。
这是一个非常代码:
RoutePatternPoint.prototype.showOnMap = function(map)
{
var that = this;
google.maps.event.addListener(this.marker, "click", function(event)
{
window.setTimeout(function(){
if(RoutePatternPoint.markerDoubleClickFix === false) { doSomething(); }
RoutePatternPoint.markerDoubleClickFix = false;
},350);
});
google.maps.event.addListener(this.marker, "dblclick", function(event)
{
RoutePatternPoint.markerDoubleClickFix = true;
});
}
问题是 google maps api v3 在实现单击和双击事件时存在错误 - 它们都被执行。
所以解决的办法就是减慢单击事件的速度,看看是否执行了双击事件。如果执行了双击事件,那么我们中断单击事件。
不幸的是,我的代码没有按照我想要的方式工作,所以我决定编写一些警报函数,看看会发生什么。你猜怎么着?单击事件内部的 setTimeout 函数执行两次。
我究竟做错了什么?