如何在打字稿中执行并行循环

时间:2019-06-28 07:48:53

标签: javascript typescript react-native parallel-processing

要计算两个点(纬度,经度)之间的距离,请执行haversine公式的功能。为了提高性能,我想并行执行此for循环。请评论该怎么做?

  for (var _i = 0; _i < count; _i++) { 
            var _dummy: number = haversine(36.12, -86.67,
              data[_i].position.lat, data[_i].position.lng);
          }

完整的源代码列表以供参考。

//There are 6200 points in the JSON file
import data from './json/test.json';

let radians = function (degree: number) {

  // degrees to radians
  let rad: number = degree * Math.PI / 180;

  return rad;
}

const haversine = (lat1: number, lon1: number, lat2: number, lon2: number) => {

  let dlat, dlon, a, c, R: number;

  R = 6372.8; // km
  dlat = radians(lat2 - lat1);
  dlon = radians(lon2 - lon1);
  lat1 = radians(lat1);
  lat2 = radians(lat2);
  a = Math.sin(dlat / 2) * Math.sin(dlat / 2) + Math.sin(dlon / 2) * Math.sin(dlon / 2) * Math.cos(lat1) * Math.cos(lat2)
  c = 2 * Math.asin(Math.sqrt(a));
  return R * c;
}

let test = function () {
  const keys = Object.keys(data);

  let count: number = keys.length;
  for (var _i = 0; _i < count; _i++) {
    var _dummy: number = haversine(
      36.12, -86.67, data[_i].position.lat, data[_i].position.lng);
  }

}

0 个答案:

没有答案