我想知道一些与删除功能相关的信息。请参阅以下代码:-
// 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 方法调用服务器端代码来删除记录,并且不返回任何内容。
我有以下两个问题:-
- 如果什么都没有返回,为什么需要订阅?它只是为了 200 条消息代码吗?
以下修改后的调用不起作用:-
// 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.status
或response.success
或error
error
回调来检查状态
deleteFromComp(Id: string): void {
this.subscriptions.push(this.MyService.delete(Id).subscribe(
() => {
this.CallServciceToGetDataFromServer(this.PageRequestModel);
},
error => this.errorMessage = <any>error, () => { }
));
}