Angular2 – 如何在组件中链接异步服务调用(http请求)?

前端之家收集整理的这篇文章主要介绍了Angular2 – 如何在组件中链接异步服务调用(http请求)?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个组件,首先需要调用POST的服务.然后在同一个组件中我想等到POST完成后,调用另一个获取数据的服务.

如何进行GET调用等待POST调用完成?

在new-version.component.ts中:

  1. private createNewVersion(value) {
  2. ...
  3.  
  4. // create new version,then call on all available versions
  5.  
  6. // POST call
  7. this._newVersionService.createNewVersion(vnr);
  8.  
  9. // GET call
  10. this._versionService.getAvailableVersions();
  11.  
  12. ...
  13. }

在new-version.service.ts中:

  1. export class NewVersionService {
  2.  
  3. response$: Subject<any>;
  4.  
  5. constructor(private _http: Http) {
  6. this.response$= new BehaviorSubject<any>(null);
  7. }
  8.  
  9. public createNewVersion(versionNr) {
  10. this._http.post('http://localhost:8080/services/' + versionNr,null,{
  11. method: 'POST',})
  12. .subscribe(response => {
  13. this.response$.next(response.status);
  14. },error => console.error(error));
  15. }

谢谢!

当一个调用返回一个Promise链时调用
  1. someFunction() {
  2. return returnsPromise()
  3. .then(result => doSomethingNext())
  4. .then(result => doSomethingAfterThat());
  5. }

确保你有一个返回该链的Promise的返回值,因此someFunc()的调用者也有机会在doSomethingAfterThat()完成后执行额外的工作.

当一个调用返回一个Observable时,然后使用完整的回调

  1. someFunction() {
  2. return returnsObservable()
  3. .subscribe(
  4. event => doForEachEvent(),error => handleError(),() => doSomethingNext()
  5. .then(result => doSomethingAfterThat());
  6. }

doSomethingNext()在最后一个事件之后执行,doSomethingAfterThat()再次与then()链接显示如何混合observable和promise.做一点事().

猜你在找的Angularjs相关文章