window.set同步处理异步调用的超时
window.setTimeout for processing async calls synchronous?
我正在开发一个Google Maps API功能,该功能包含了在方向结果的某个点获取高程。这对于较小的路线来说是可以的,但具有更多路径的较大路线会成为一个问题。因此,我将总路径拆分为单独的批处理来执行,但有时它们会以随机顺序返回。这是由于Google Elevation Service是异步调用的(没有其他方法)。
所需的结果是在所有批次完成时输出高程数据(即使只是一个批次)。所以我想加入window.setTimeout来按顺序处理调用,但我想知道两件事:
- 这是一个好方法,还是有更好的选择
-
我正在包装和包装功能,但最终没有什么好东西。也许有人能给我指明正确的方向?下面是我的伪方法。
函数getElevationData(){var elevate=新的google.maps.ElectionService();var batchSize=250;var elevationBatches=Math.ceil(directions.routes[0].overview_path/batchSize);
for(var i=0;i<elevationBatches;i++){var thisBatch=[];
for(var = j = i * batchSize; j < i * batchSize + batchSize; j++) { if(j < directions.routes[0].overview_path.length) { thisBatch.push(directions.routes[0].overview_path[j]); } else { break; } } getElevationBatchData(elevator, i, batchData);
}}
函数getElevationBatchData(升降机、批次、数据){window.setTimeout(function(){//检查是否已完成。。?如果没有,请重新启动此功能?
elevator.getElevationAlongPath({ path: data, samples: 256 }, function(elevations, status) { // process the result (basically checking for status OK, concatenating and adding rows to the DataTable }
},100);}
不知怎么的,很抱歉代码标记;当我在SO的编辑器中键入更多的伪代码时,将不再应用正确的代码格式。。。
为什么不能并行运行所有请求(即使用setTimeout方法,但在这里很可能没有必要),然后在所有请求完成并返回部分结果时显示整体结果?
function onRequestComplete(index, context) {
alreadyProcessed++;
if (alreadyProcessed == totalNumOfRequests) {
showResults();
}
batches[index].data = context;
}
function doAsyncRequest(index) {
someObject.doAsyncRequest(batches[index], function (err, data) {
onRequestComplete(index, data);
});
}
for(var i=0;i<totalNumOfRequests;i++){
doAsyncRequest(i);
};
- jasmine 2-在jasmine指定的超时时间内未调用异步回调.DEFAULT_TIMEOUT_INTERVAL
- setTimeout() 函数在超时持续时间之前调用
- 导致ajax调用超时错误的原因
- window.set同步处理异步调用的超时
- 条件设置超时调用
- 为接收事件的函数调用设置超时不适用于 IE7
- 具有超时的地理位置会导致错误处理程序被调用两次
- 承诺与函数调用/设置超时
- 量角器根据条件单击嵌套元素,错误 - 在指定的超时内未调用异步回调
- 画布计时器的设置超时调用函数
- 如何在角度 js $http调用中显示超时错误
- 多个设置超时调用的时间段计数
- 如何在函数调用之间设置超时
- jQuery 超时函数从未在 mouseEnter mouseleave 上调用过
- Response.重定向不能在会话超时的页面回调中调用
- Javascript中来自客户端的Web服务调用超时
- 超时后调用函数数组-JavaScript
- 超时函数完成后如何调用函数
- 为什么我的函数在setTimeout()超时之前被调用
- Javascript 客户端上的 Websocket 调用超时