在服务中使用删除 http 命令



我想知道一些与删除功能相关的信息。请参阅以下代码:-

// Method in service
delete(Id: string): Observable<any> {
this.Url = 'http://locahost:8080/...';
return this.http.delete(this.Url)
.map((response:Response) => response.json())
.catch(this.handleError);
}
// Method in component
deleteFromComp(Id: string): void {
this.subscriptions.push(this.MyService.delete(Id).subscribe(
data => {
},
error => this.errorMessage = <any>error, () => { }
));
this.CallServciceToGetDataFromServer(this.PageRequestModel);
}

delete 方法调用服务器端代码来删除记录,并且不返回任何内容。

我有以下两个问题:-

  1. 如果什么都没有返回,为什么需要订阅?它只是为了 200 条消息代码吗?
  2. 以下修改后的调用不起作用:-

    // Method in component
    deleteFromComp(Id: string): void {
    this.subscriptions.push(this.MyService.delete(Id).subscribe(
    data => {
    this.CallServciceToGetDataFromServer(this.PageRequestModel);
    },
    error => this.errorMessage = <any>error, () => { }
    ));
    }
    

如果您不订阅observables

它们将不会执行由于httpClient所有HTTP requests返回observables,您应该向他们subscribe

订阅可观察量:

请记住,可观察量是懒惰的。如果您不订阅,则没有任何内容 将会发生。很高兴知道,当您订阅 观察者,订阅(( 的每个调用都会触发它自己的独立 该给定观察者的执行。不共享订阅呼叫 在同一个可观察量的多个订阅者之间。

这是一个有用的链接

下面是一个示例代码段:

import { Observable } from "rxjs/Observable"
// create observable
const simpleObservable = new Observable((observer) => {
// observable execution
observer.next("bla bla bla")
observer.complete()
})
// subscribe to the observable
simpleObservable.subscribe()
// dispose the observable
simpleObservable.unsubscribe()

在此直到您订阅,即直到您调用不会执行的simpleObservable.subscribe()

附注:

使用subscribe的主要用途之一,这对于检查delete status很重要,例如,如果backend抛出一个error,那么你可以使用res.statusresponse.successerrorerror回调来检查状态

deleteFromComp(Id: string): void {
this.subscriptions.push(this.MyService.delete(Id).subscribe(
() => {
this.CallServciceToGetDataFromServer(this.PageRequestModel);
},
error => this.errorMessage = <any>error, () => { }
));
}

最新更新