Я называю службу, которая вызывает функцию 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?