Запрос HTTP.GET внутри прошлой проблемы - PullRequest
0 голосов
/ 14 мая 2019

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

    myObject :SomeType;

    onPaste(event: ClipboardEvent) {
    let clipboardData = event.clipboardData ;
    let pastedText = clipboardData.getData('text');
    try {
      this.http.get(this.rootUrl+'/sometoken/'+pastedText.trim()).subscribe(
        res => {
          this.myObject = res as SomeType;
          console.log('Value1: '+this.myObject.value1);// value here is exist
        },
        err => {
          console.log(err);
        });
    } catch (error) {
      console.log(error)
    }
      console.log('Value1: '+this.myObject.value1);// value here is undefined!
    } 

Заранее спасибо

1 Ответ

1 голос
/ 14 мая 2019

Когда вы используете RxJS, вы используете асинхронное программирование.Это похоже на использование обещаний.

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

const obs = rxjs.of('Async').pipe(
  rxjs.operators.delay(1000)
);

let val = '(empty)';

obs.subscribe(value =>{
   val = value;
   console.log('Inside of subscribe, val = ', val);
});

console.log('Outside of subscribe, val = ', val);
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.5.2/rxjs.umd.js"></script>

Как видите, он работает только в обратном вызове подписки .Опять же, чтобы упростить и решить вашу проблему, учтите, что только те обратные вызовы актуальны, когда вам нужны ваши данные.

Я призываю вас прочитать документацию , если вы хотите работать с Angular (и неявно RxJS), потому что без его понимания вам будет очень трудно использовать каркас!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...