Ионная базовая функция внутри класса выполняется не полностью

#asynchronous #ionic-framework #ionic3

#асинхронный #ionic-framework #ionic3

Вопрос:

   calculate_distance(lat1: number, lat2: number, long1: number, long2: number) {
    console.log("Inside getting calculate_distance");
    console.log(lat1);
    console.log(lat2);
    console.log(long1);
    console.log(long2);
    let p = 0.017453292519943295;    // Math.PI / 180
    let c = Math.cos;
    let a = 0.5 - c((lat1 - lat2) * p) / 2   c(lat2 * p) * c((lat1) * p) * (1 - c(((long1 - long2) * p))) / 2;
    let dis = (12742 * Math.asin(Math.sqrt(a))); // 2 * R; R = 6371 km
    return dis.toFixed(2);
  }
  

вызываю эту функцию внутри другой функции, и я не получаю значение расстояния.

Ответ №1:

я только что добавил возвращаемый тип promise в свою функцию. Так что она вернет мне значение.

 calculateDistance(lat1: number, lat2: number, long1: number, long2: number):Promise<any> {
    console.log("Inside getting calculate_distance");
    console.log(lat1);
    console.log(lat2);
    console.log(long1);
    console.log(long2);
    let p = 0.017453292519943295;    // Math.PI / 180
    let c = Math.cos;
    let a = 0.5 - c((lat1 - lat2) * p) / 2   c(lat2 * p) * c((lat1) * p) * (1 - c(((long1 - long2) * p))) / 2;
    let dis = (12742 * Math.asin(Math.sqrt(a))); // 2 * R; R = 6371 km
    return dis.toFixed(2);
  }
  

и вызывается calculateDistance следующим образом

   this.calculateDistance(this.my_lat, this.proj_lat, this.my_long, this.proj_long).then(result=>{
    this.distance = String(result)
  })