在javascript中完成所有回调之后,我该如何执行一些东西
how do I execute something after all the callbacks are finished in javascript
我正在使用谷歌地图v3进行一些地址转换。我将请求和回调函数传递给Geocoder.geocode。回调函数将在地图上添加一个标记。毕竟,我使用map.FitBounds(fullBounds)
使所有制造商都在视线中,其中map
是Mapobejct,fullBounds
是LatLngBoundsobejct。
下面是我的代码:
for(i = 0; i < requestArray.length; i ++)
{
geo.geocode(requestArray[i], calbck);
}
我的问题是,当我在calbck
中调用map.fitBounds(fullBounds)
时,并不是所有的回调函数都完成了(在我的观察中总是没有)。那么,如何延迟fitBounds
,使所有回调函数都完成呢?
如果你知道回调的数量,你可以在回调中调用其他函数,增加计数器,当计数器与回调的数量相同时,你就执行代码。
类似于:
function myFunctionToExecuteAfterCallbacks()
{
numCallbacks++;
if(numCallbacks == numAllCallbacks)
{
// Code to execute here...
}
}
至少有一次我就是这样解决的。不知道更好的解决方案。也许您可以触发一个事件,而不是调用另一个函数。但这几乎是一样的。。。
顺便说一句,我发现了一些关于的话题
等待所有ajax回调执行的最佳解决方案
javascript:用一个回调执行一堆异步方法
如果您使用Promise,请查看Promise.all().
您也可以进行递归回调。
doStuff() {
if (requestArray.length) {
geo.geocode(requestArray.pop(), this.doStuff)
} else {
// we're done;
}
}
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- JavaScript执行暂时挂起页面
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 当js函数's已执行
- 哪个先执行
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- HTML表单提交时未执行外部函数
- 在Safari执行javascript之前对其进行修改
- Amd,希望确保某个东西总是最后执行
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- 递归使用 eval() 是检查程序执行的好方法吗?
- 如何做到这一点,使代码在不传递条件后执行函数
- 如何在执行此特定onclick事件时执行JavaScript函数
- 如何在从浏览缓存加载页面时执行javascript
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- Jquery:代码在rails中的页面加载时未执行
- 如何防止jQueryonclick事件中的Ruby方法在页面刷新时执行
- JavaScript动画从不执行
- 为什么onsubmit函数似乎没有执行
- 推荐在JavaScript中执行存储为字符串的函数,而不是使用eval