0

とりわけ、ユーザーの地理位置情報データをサーバーに定期的に送信する必要がある JavaScript コードがあります。

これが C または Java の場合、このタスク用に別のスレッドを生成するだけで済み、他の機能はすべて並列スレッドで実行されます。

しかし、Javascript がマルチスレッドをサポートしていないことを考えると、どうすればこのタスクを達成できるでしょうか?

web workerを指すいくつかのソリューションを見つけましたが、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
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 に答える
0

ほぼすべてのブラウザでサポートされているsetTimeoutおよび機能を使用できます。clearTimeout

これにより、場所を送信するタスクを実行する再帰関数を呼び出すことができます。

$.ajax()jquery 関数を使用して、サーバーと非同期に通信できます。

于 2013-06-05T10:46:53.447 に答える