我有一个javascript代码,除其他外,它必须定期将用户的地理位置数据发送到服务器。
如果这是 C 或 Java,我会为这个任务生成另一个线程,而所有其他功能都发生在并行线程中。
但是考虑到 Javascript 不支持多线程,我该如何完成这项任务?
我找到了一些指向web workers的解决方案,但鉴于 IE 只有 IE10+ 支持它,我正在寻找一个更通用的解决方案。
我有一个javascript代码,除其他外,它必须定期将用户的地理位置数据发送到服务器。
如果这是 C 或 Java,我会为这个任务生成另一个线程,而所有其他功能都发生在并行线程中。
但是考虑到 Javascript 不支持多线程,我该如何完成这项任务?
我找到了一些指向web workers的解决方案,但鉴于 IE 只有 IE10+ 支持它,我正在寻找一个更通用的解决方案。
Javascript是单线程的。但是您可以使用setInterval来“模拟”多线程。
function f() {
send-geolocation
}
setInterval(f, 1000)
或者
setInterval("send-geolocation()", 1000)
您可以使用几乎所有浏览器都支持的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`;