过去事件内的HTTP.GET请求

时间:2019-05-14 12:07:38

标签: angular angular7

当我尝试使用过去的事件从我的API中获取一些数据时,结果表明我将数据释放到subscription块之外,我尝试使用不在组件内部的服务来执行此操作,但是我仍然具有相同的行为。

    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 个答案:

答案 0 :(得分:1)

使用RxJS时,将使用异步编程。就像使用Promises。

为简单起见,这是一个创建可观察对象的代码段,然后在一秒钟后发出。

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隐式地)工作,我敦促您阅读the documentation,因为如果不理解Angular,将很难使用该框架!