我有一個JavaScript代碼,其中包括其他必須定期發送用戶的地理位置數據到服務器。Javascript - 定期發送用戶位置數據到服務器(多線程)
如果這是C或Java,我會爲此任務產生另一個線程,而其他所有功能都是在並行線程中進行的。
但考慮到Javascript不支持多線程,我該如何完成這項任務?
我發現了幾個解決方案,指向web workers,但考慮到IE只有IE10 +支持它,我正在尋找更多功能的解決方案。
我有一個JavaScript代碼,其中包括其他必須定期發送用戶的地理位置數據到服務器。Javascript - 定期發送用戶位置數據到服務器(多線程)
如果這是C或Java,我會爲此任務產生另一個線程,而其他所有功能都是在並行線程中進行的。
但考慮到Javascript不支持多線程,我該如何完成這項任務?
我發現了幾個解決方案,指向web workers,但考慮到IE只有IE10 +支持它,我正在尋找更多功能的解決方案。
Javascript是單線程的。但是你可以使用setInterval來「模擬」多線程。
function f() {
send-geolocation
}
setInterval(f, 1000)
或
setInterval("send-geolocation()", 1000)
只是我尋找的解決方案:) – Hashken
您可以使用setTimeout
和clearTimeout
幾乎所有瀏覽器均支持的功能。
通過這個,你可以調用一個遞歸函數來完成發送位置的任務。
$.ajax()
jquery函數可用於異步通信到服務器。
var sender = function(interval, url, collectGeoData) {
this.interval = interval;
this.url = url;
if (typeof collectGeoData == 'function') {
this.collectGeoData = collectGeoData;
}
else return null;
setInterval(send, this.interval);
}
sender.prototype.send = function() {
var data = this.collectGeoData();
$.post(this.url, data);
}
var thread = new sender('...',50000, function() { //collecting geo data })`enter code here`;
以下螺紋可能對你有用 [http://stackoverflow.com/questions/16230226/how-to-send-geolocation-data從瀏覽器到服務器] [1] [1]:http://stackoverflow.com/questions/16230226/如何發送地理位置數據從瀏覽器到服務器 – Pawan
我的問題不是獲取地理位置數據,而是以一定的時間間隔繼續發送它。因爲我必須重複發送它,所以我需要將此邏輯從其他JavaScript代碼中分離出來。我正在尋找這個解決方案 – Hashken