Size: a a a

Angular - русскоговорящее сообщество

2021 March 21

AE

Argument Exception in Angular - русскоговорящее сообщество
Максим
ага.. а что дописать надо?
чтобы сделать синхронно? никак, переместите код что находится вне subscribe внутри subscribe
источник

М

Максим in Angular - русскоговорящее сообщество
так а если мне дальше надо раотать с переменными
источник

М

Максим in Angular - русскоговорящее сообщество
может его как-то можно в async await функцию переделать? просто не подучается додумать)
источник

AE

Argument Exception in Angular - русскоговорящее сообщество
можно но за такое убивают на месте
источник

М

Максим in Angular - русскоговорящее сообщество
А как можно получить ответ с бекенда, записать в прееменную и работать с ней потом в других местах?
источник

М

Максим in Angular - русскоговорящее сообщество
не таким способов как у меня
источник

М

Максим in Angular - русскоговорящее сообщество
getLocation(): Observable<any> {
 return this.http.get<any>('https://geolocation-db.com/json/')
}

///////////
this.userService.getLocation().subscribe(location => {
 this.location = location
})

consoleconsole.log(this.location)

На примере этого
источник

AE

Argument Exception in Angular - русскоговорящее сообщество
по сути ваш способ выше тоже сойдет, но надо определять когда переменную можно использовать, типа isLoading
источник

AE

Argument Exception in Angular - русскоговорящее сообщество
без конкретной цели для чего надо, особо тут не посоветуешь ничего толкового
источник

М

Максим in Angular - русскоговорящее сообщество
ну я хочу собрать объект сессии и записать в базу
Мне надо дернуть локацию, надо дернуть БД по юзерид
дальше напихать объект и отправить в бд
источник

М

Максим in Angular - русскоговорящее сообщество
грубо говоря мне надо переменные location и user - это ответы с http
чтобы потом сделать session.ip = location.ip session.user_id = user.id
источник

М

Максим in Angular - русскоговорящее сообщество
Вот юзер
this.userService.create(this.ref).subscribe(user => {
   this.userid = user.id
})

Вот локация
this.userService.getLocation().subscribe(location => {
 this.location = location
})


теперь мне надо
this.session.user_id = user.id
this.session.ip = location.ip

Как видно, все внутрь сабскрайба впихнуть не сильно красиво будет
источник

🏡К

🏡 Назар Калитюк... in Angular - русскоговорящее сообщество
forkJoin можно использовать. Но прям большого смысла в этом нет.
источник

М

Максим in Angular - русскоговорящее сообщество
Серьзно, нельзя как-то просто записать в переменную ответ с сервера?
Например в php
$res = curl_exec($ch)
и все, теперь можно работать с ответом сервера в любом месте через $res
источник

AE

Argument Exception in Angular - русскоговорящее сообщество
в вашем примере вы можете через this.userId, this.location обращаться
источник

М

Максим in Angular - русскоговорящее сообщество
так undefined же выдает...
источник

AE

Argument Exception in Angular - русскоговорящее сообщество
скорее всего обращаетесь к ним когда результат вы еще не получили
источник

М

Максим in Angular - русскоговорящее сообщество
this.userService.getLocation().subscribe(location => {
 this.location = location

console.log('IN', this.location)
})


console.log('OUT, this.location)
источник

М

Максим in Angular - русскоговорящее сообщество
OUT будет undefined
источник

М

Максим in Angular - русскоговорящее сообщество
Argument Exception
скорее всего обращаетесь к ним когда результат вы еще не получили
а как ожидать результат?
источник