2013-06-05 36 views
0

我有一個JavaScript代碼,其中包括其他必須定期發送用戶的地理位置數據到服務器。Javascript - 定期發送用戶位置數據到服務器(多線程)

如果這是C或Java,我會爲此任務產生另一個線程,而其他所有功能都是在並行線程中進行的。

但考慮到Javascript不支持多線程,我該如何完成這項任務?

我發現了幾個解決方案,指向web workers,但考慮到IE只有IE10 +支持它,我正在尋找更多功能的解決方案。

+0

以下螺紋可能對你有用 [http://stackoverflow.com/questions/16230226/how-to-send-geolocation-data從瀏覽器到服務器] [1] [1]:http://stackoverflow.com/questions/16230226/如何發送地理位置數據從瀏覽器到服務器 – Pawan

+0

我的問題不是獲取地理位置數據,而是以一定的時間間隔繼續發送它。因爲我必須重複發送它,所以我需要將此邏輯從其他JavaScript代碼中分離出來。我正在尋找這個解決方案 – Hashken

回答

2

Javascript是單線程的。但是你可以使用setInterval來「模擬」多線程。

function f() { 
    send-geolocation 
} 
setInterval(f, 1000) 

setInterval("send-geolocation()", 1000) 
+0

只是我尋找的解決方案:) – Hashken

0

您可以使用setTimeoutclearTimeout幾乎所有瀏覽器均支持的功能。

通過這個,你可以調用一個遞歸函數來完成發送位置的任務。

$.ajax() jquery函數可用於異步通信到服務器。

0
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`; 
相關問題