2017-06-01 83 views
2

我在我的网站上使用Google Maps API。我显示路线,距离和路线的持续时间。因此,我有以下代码:如何在HTML中每10分钟执行一次Javascript?

<script> 
function initMap() { 
var map = new google.maps.Map(document.getElementById('map'), { 
zoom: 5,}); 
var directionsService = new google.maps.DirectionsService; 
var directionsDisplay = new google.maps.DirectionsRenderer({ 
draggable: false, 
map: map, 
panel: document.getElementById('right-panel')}); 
directionsDisplay.addListener('directions_changed', function() { 
computeTotalDistance(directionsDisplay.getDirections()); 
}); 
displayRoute('Zeiskamer Straße 1, 76756 Bellheim', 'Voelklingen', directionsService, directionsDisplay); 
} 


function displayRoute(origin, destination, service, display) { 
service.route({ 
origin: origin, 
destination: destination, 
travelMode: 'DRIVING', 
avoidTolls: true, 
drivingOptions: { 
    departureTime: new Date(Date.now() + 100), 
    trafficModel: 'optimistic' 
       }, 
}, 
function(response, status) { 
if (status === 'OK') { 
    display.setDirections(response); 
} else { 
    alert('Could not display directions due to: ' + status); 
} 
}); 
} 

function computeTotalDistance(result) { 
var total = 0; 
var myroute = result.routes[0]; 

total = "Die Entfernung beträgt: <b>" +myroute.legs[0].distance.text  +"</b>"; 
document.getElementById('total').innerHTML = total + "<br>"+ "Die voraussichtliche Fahrzeit beträgt: <b>" +  myroute.legs[0].duration_in_traffic.text + "</b>" + seconds; 


} 


</script> 
<script src="https://maps.googleapis.com/maps/api/js?key=MYKEY&callback=initMap"> 
</script> 

我想的是,duration_in_traffic更新每隔10min。但我不知道如何每10分钟用一个参数执行一个函数。 我该怎么做?

+0

您可以用'的setInterval(函数(){}, 10 * 60 * 1000)' –

+0

这里的功能是要在10分钟常规时间间隔调用函数 –

回答

0

您必须设置一个计时器,将调用该函数每隔十分钟:

function initMap() { 
    ... 
    // Call initially 
    displayRoute('Zeiskamer Straße 1, 76756 Bellheim', 'Voelklingen', directionsService, directionsDisplay); 

    // And then call it again every 10 minutes 
    setInterval(function() { 
    displayRoute('Zeiskamer Straße 1, 76756 Bellheim', 'Voelklingen', directionsService, directionsDisplay); 
    }, 10 * 60 * 1000); 
    //^10 minutes in ms 
} 

对于方便起见,可以在另一个函数包裹displayRoute

function initMap() { 
    ... 
    var displayRouteHandler = function() { 
    displayRoute('Zeiskamer Straße 1, 76756 Bellheim', 'Voelklingen', directionsService, directionsDisplay); 
    }; 
    // Call initially 
    displayRouteHandler(); 

    // And then call it again every 10 minutes 
    setInterval(displayRouteHandler, 10 * 60 * 1000); 
    //^10 minutes in ms 
} 

这是更好,因为你没有重复的代码。

+0

谢谢你最好的答案! –

2

用setInterval来完成任务的重复间隔

setInterval(function() { showAlert('this'); }, 10*60*1000); 
 

 
function showAlert(text){ 
 
    alert("called "+text) 
 
}

0

使用的setTimeout()是这样的:

function one() { 
 
    console.log(+new Date()); 
 
    setTimeout(function() { 
 
     one(); 
 
    }, 1000) 
 
} 
 

 
one();

每秒钟变化的值; 可以使用的setTimeout(回调,10 * 60 * 1000)到第二回调每10分钟

0

用setInterval来一定时间后再次和再次执行的东西。

setInterval(function(){ 
    console.log("test"); 
},3000); 

这会在每3秒钟后记录一次“测试”。

相关问题