У меня есть ниже код в main.html
if(typeof(Worker) !== "undefined") {
if(typeof(w) == "undefined") {
w = new Worker("/location_worker.js");
}
w.onmessage = function(event) {
sequence = event.data;
if(Cookies.get("location_tracked") == "done")
{
w.terminate();
w = undefined;
return;
}
if(navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(function(position)
{
lat = position.coords.latitude;
lon = position.coords.longitude;
$.ajax({
type: "POST",
url: "/api/",
data: {'action':'receive_loc', 'lat': lat,'lon': lon,'enc_data': enc_data,'reached': reached , 'sequence' : sequence },
success: function(jres)
{
res = JSON.parse(jres);
stop = false;
if(res.status == 11)
{
stop = true;
}
if(!stop)
{
//loop continues
}else{
finished = true;
w.terminate();
w = undefined;
return;
}
},
});
},function(code, message) {
$('#error').html("<b>Location Sharing blocked by User..</b>");
});
} else{
alert("Sorry, your browser does not support HTML5 geolocation.");
}
};
} else {
document.getElementById("result").innerHTML = "Sorry, your browser does not support Web Workers...";
}
И location_worker.js
содержит ниже
var i = 0;
var ft = 2000;
function timedCount() {
i = i + 1;
self.postMessage(i);
console.log(i);
setTimeout("timedCount()",ft);
}
timedCount();
, поэтому длякаждые 2 секунды будет передаваться ajax, который работает нормально, но в следующих сценариях он не работает должным образом
, например, если последовательность 1 и 2 работала нормально, а tab / browser стал неактивным и через некоторое время, если я вернусь кНа этой странице все последующие запросы (которые должны отправляться, когда вкладка неактивна) отправляются одновременно (последовательность 3,4,5,6,7,8,9 и т. д.). Поэтому все эти запросы отправляются.одни и те же данные с одинаковыми значениями долготы, которых не должно быть.
кто-то, пожалуйста, дайте мне знать, что не так с этим потоком.