Как отозвать значение из асинхронных функций в 4 уровня? - PullRequest
0 голосов
/ 27 марта 2019

Я называю службу, которая вызывает функцию 1, которая вызывает функцию 2, которая вызывает функцию 3 (4 уровня).Я хочу получить переменную из функции 3.

Я прочитал следующие ответы: Как я могу вернуть ответ от асинхронного вызова?33 ответа Почему моя переменная не изменилась после того, как я изменил ее внутри функции?- Ссылка на асинхронный код 6

Я понимаю, как использовать обратный вызов с одной асинхронной функцией.Я прочитал некоторые другие вопросы и ответы, но не сделал это.Я пытался поставить обратный вызов на каждый уровень и пытался смешать его с await.

home.ts

import { NavController } from 'ionic-angular';
import { SearchHereService } from '../../services/searchHere.service';


@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage implements OnInit {

  constructor(
    public navCtrl: NavController,
    public searchHereService: SearchHereService) {
    } 

  ngOnInit(){
    this.searchHereService.searchLocation()
    .then((val) => {
      console.log('callback searching()',val)
    }) ;
  }

}

searchHereService.ts:

declare var H: any;


@Injectable()
export class SearchHereService{
    public foundLocation: any;
    public searchResult: any;


    searchLocation() {
        var platform = new H.service.Platform({
            app_id: "..." , //hided
            app_code: "...", //hided
          });

        var searchParams = {
            'q': 'New York',
            'in': '-180,-90,180,90'
        };

        var search = new H.places.Search(platform.getPlacesService()), searchResult, error;

        let foundLocation;
        foundLocation = this.searching(searchParams, search).then((resp) => {
            console.log(resp)
            return resp;
           }).catch((error) => {
             console.log('Error getting location', error);
           }
        )
        return foundLocation

    }


    private searching(searchParams, search) {

        return search.request(searchParams,{},onResult,onError)

        function onResult(data){
            console.log('onResult',data)
            return data
        }

        function onError(data){
            console.log('search error', data)
        }
    }
}



I wanna use the value data from "function onResult" inside my home.ts file.
What do i have to change in my code to get it done?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...