繁体   English   中英

如何在没有Angular 2中的observable的情况下调用http方法

[英]How to call an http method without the observable in Angular 2

当我调用这个函数时,console.log()工作,但http.delete方法永远不会运行,我假设因为我还没有订阅observable。

因为我是通过表单上的按钮来调用它的,所以我不关心返回任何内容,所以有没有办法只是拨打电话?

  deleteCompany(id) { 
      console.log('from data service: ', id);
      this.http.delete(this.url + 'Companies/' + id + '?' + this.token).map(res => res.json());
   }

编辑:我选择了这个。 这是处理这个问题的正确方法吗?

import 'rxjs/add/operator/toPromise';
...
return this.http.delete(this.url + 'Companies/' + id + '?' + this.token).toPromise();

正如@Gunter指出的那样,如果你想使用observable,你需要调用subscribe 如果你想要返回一些东西(因为承诺不是懒惰的),你可以将observable转换为promise ,如下所示:

import 'rxjs/add/operator/toPromise';
     deleteCompany(id) { 
          console.log('from data service: ', id);
         return this.http.delete(this.url + 'Companies/' + id + '?' + this.token).toPromise();
       }

为了消耗用它then ,而不是subscribe您的组件。 例如:

this._yourServiceName.deleteCompany(this._id).then((data)=> console.log(data), (err) => console.log("error occured", err););

没有。在subscribetoPromise之前,Observables是懒惰的并且不会做任何事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM