我有一个绑定到谷歌地图上的鼠标点击事件的函数。由于该功能的性质,处理完成可能需要一些时间(0.1 秒 - 2 秒,具体取决于连接速度)。这本身并不是什么大问题,但是如果用户点击满意,这可能会导致问题,并且以后的调用有点依赖于前一个。
让后面的调用等待前面的调用完成的最佳方法是什么?甚至是处理先前呼叫失败的最佳方法?
我已经看过以下内容:
- 使用自定义
.addEventListener
(链接) - 使用等待前一个已处理的 while 循环
- 使用一个简单的 if 语句来检查是否需要重新运行前一个
- 使用其他形式的回调
现在获取一些上下文示例代码:
this.createPath = function(){
//if previous path segment has no length
if (pathSegment[this.index-1].getPath().length === 0){
//we need the previous path segment recreated using this same function
pathSegment[this.index-1].createPath();
//now we can retry this path segment again
this.createPath();
}
//all is well, create this path segment using Google Maps direction service
else {
child.createPathLine(pathSegment[this.index-1].getEndPoint(), this.clickCoords);
}
}
自然地,这段代码会像疯了一样循环并创建许多请求。