在javascript中完成所有回调之后,我该如何执行一些东西

how do I execute something after all the callbacks are finished in javascript

本文关键字:何执行 执行 javascript 之后 回调      更新时间:2023-09-26

我正在使用谷歌地图v3进行一些地址转换。我将请求和回调函数传递给Geocoder.geocode。回调函数将在地图上添加一个标记。毕竟,我使用map.FitBounds(fullBounds)使所有制造商都在视线中,其中mapMapobejct,fullBoundsLatLngBoundsobejct。

下面是我的代码:

    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;
  }
}