0

我有一个javascript代码,除其他外,它必须定期将用户的地理位置数据发送到服务器。

如果这是 C 或 Java,我会为这个任务生成另一个线程,而所有其他功能都发生在并行线程中。

但是考虑到 Javascript 不支持多线程,我该如何完成这项任务?

我找到了一些指向web workers的解决方案,但鉴于 IE 只有 IE10+ 支持它,我正在寻找一个更通用的解决方案。

4

3 回答 3

2

Javascript是单线程的。但是您可以使用setInterval来“模拟”多线程。

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

或者

setInterval("send-geolocation()", 1000)
于 2013-06-05T10:47:22.217 回答
0

您可以使用几乎所有浏览器都支持的setTimeout和功能。clearTimeout

通过这个你可以调用一个递归函数来完成发送位置的任务。

$.ajax()jquery 函数可用于与服务器异步通信。

于 2013-06-05T10:46:53.447 回答
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`;
于 2013-06-05T11:01:49.190 回答