Angular 2,Observable:http.post,http.get

时间:2017-02-09 11:06:05

标签: http angular typescript observable

我有一些关于Http.post和Http.get的问题 观测。我是学生,我正在尝试编写一个简单的WebApp和 一台服务器。

如果按下按钮,我想在我的服务器上发布一个布尔值。这篇文章 过程确实有效,但每次按下按钮我都会再次订阅可观察对象。我的http.get方法遇到了同样的问题,解决了这段代码的问题。

getdata() {   
if(this.subscribtion2 === null){
        this.isValid = false;
      this.subscribtion2 = this.service.get2().subscribe(

         daten => {
            this.jsonobj = daten;
            this.message = 
                [
                this.jsonobj.data.message1,
                ];
            console.log('subscribe')
            ;
            this.myModelneu = this.message[0];     
             },     
         err => this.handleError(err),
         () => console.log('Simple GET completed')
            );

    }else
   {
       this.isValid = true;
       console.log('unsubscribe')
       this.subscribtion2.unsubscribe();
       this.subscribtion2 = null;

   }
}

get2()方法属于不同的类。

  get2() {


        return Observable.interval(3000)
          .switchMap(() => this.http.get('http://127.0.0.1:3000/daten/2'))
          .map(res => res.json())

  }

我不认为这是常见的方式,但我找不到另一种方式。 我的http.post看起来像这样:

post(json: boolean) {
      console.log('post executed');
      console.log(JSON.stringify(json));

     return this.http.post('http://127.0.0.1:3000/login', { json })
     .subscribe();

   } 

我试图理解Observables的教程,但我没有找到 如何在服务器上发布数据而不订阅Observable。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

20202020202020202049 20202020202020202050 20202020202049505152 20202020202053564849 20202020202020575757 次调用,特别是httpget会返回一个以结果结束的观察结果,因此您无需取消订阅。完成后,订阅终止。