超过查询限制和最大调用堆栈大小

时间:2013-09-01 21:49:47

标签: javascript limit settimeout google-places-api callstack

在这里,我使用谷歌地图,谷歌地方,路线盒库创建一个代码,以显示两个位置之间的方向,并显示靠近方向(10,20,30英里)的对象与谷歌地方。

这是演示和代码:http://jsbin.com/EVEWOta/55但是在尝试“10mi”距离后,从马德里到莫斯科我得到了这个错误:

    ...
    ...
    ...


   OVER_QUERY_LIMIT 55:121
    199
    OVER_QUERY_LIMIT 55:121
    OK 55:121
    1268
    OVER_QUERY_LIMIT 55:121
    3
    OVER_QUERY_LIMIT
    Uncaught RangeError: Maximum call stack size exceeded 

此代码:

service.nearbySearch(request, function (results, status) {
    console.log(status);
    if (status == 'OVER_QUERY_LIMIT') {
        setTimeout(findPlaces(boxes,searchIndex),10000);
    }else{
        document.getElementById('side_bar').innerHTML += "bounds["+searchIndex+"] returns "+results.length+" results<br>";

        for (var i = 0, result; result = results[i]; i++) {
            var marker = createMarker(result);
        }
        if (++searchIndex < boxes.length) 
            setTimeout(findPlaces(boxes,searchIndex),10000);
    }
  });

此代码停止在框[14]中搜索。为什么呢?

在调用下一个框之前,我在代码setTimeot中输入了10秒?

这里真正的问题是什么?

1 个答案:

答案 0 :(得分:0)

你必须将findPlaces的调用包装成一个函数,否则将立即调用该函数而不是所需的延迟:

setTimeout(function(){findPlaces(boxes,searchIndex);},10000);