bbb(){
return new Promise((resolve, reject) => {
this.http.get(this.url).subscribe(data => {
resolve(data)
},
error => {
reject(error);
},
);
});
}
ngAfterContentInit(){
console.info(//THIS LINE
this.bbb().then(son => {
return son;
}));
}
-Эта строка- вернуть ZoneAwarePromise в консоль. Как я могу вернуть значение сына?
какова ваша цель?
@Jota.Toledo Я хочу получить значения широты и долготы из своего API. После получения операции я хочу использовать эту переменную в другой функции для создания значка карты.





Лучше использовать Observable:
import { catchError } from 'rxjs/operators';
import { throwError } from 'rxjs';
bbb() {
return this.http.get(this.url)
.pipe(
catchError(err => {
console.info('err', err);
return throwError('Something bad happened; please try again later.');
});
}
А затем просто подпишитесь на bbb:
import { Subscription } from 'rxjs';
testSubscription: Subscription;
ngAfterContentInit() {
this.testSubscription = this.bbb()
.subscribe(son => {
console.info('son', son); // here you get the result
});
}
Не забудьте unsubscribe:
ngOnDestroy() {
this.testSubscription.unsubscribe();
}
Если вы все еще хотите использовать Promise:
bbb() {
return this.http.get(this.url).toPromise();
}
Чтобы получить результат bbb:
ngAfterContentInit() {
this.bbb()
.then(son => {
console.info('son', son); // here you get the result
})
.catch(err => {
console.info(err);
});
}
Могу ли я получить доступ к переменной сына в любой функции? Потому что мне нужно создать значок карты на googlemaps.
Вы получите son асинхронно (через некоторое время)... поэтому, если вы хотите использовать его в какой-либо функции, вызовите эту функцию после того, как получите результат (внутри обратного вызова subscription или than)
Хорошо, что вы упоминаете наблюдаемый способ, но (1) catchError должен возвращать Observable и (2) суффикс $ обычно используется только для Observables, но не для подписок.
@fridoo хорошее замечание! исправил эту часть
Но лучше всего научиться работать с
Observables.