Angular2 Observable and Promise

后端 未结 3 785
面向向阳花
面向向阳花 2021-02-02 07:01

I started using Angular2 Observable, but I can\'t find something similar to .then that I used with Promises.

This is what I want

3条回答
  •  南方客
    南方客 (楼主)
    2021-02-02 07:48

    When you call subscribe(...) a Subscription is returned which doesn't have a toPromise(). If you move the code from subscribe to map you can use toPromise() instead of subscribe

    return this._httpClient.post('LoginAction', credentials)
      .map(res => res.json())
      .map(user => {
        return new User(user);
      }).toPromise();
    

    and the caller will get a Promise where he can get the value using

    public login() {
        this._user = AuthService.getInstance().login(this._loginInfo)
        .then(result => {
          doSomething();
        });
    }
    

    but you get the same result if you omit `.toPromise() and the caller uses it like

    public login() {
        this._user = AuthService.getInstance().login(this._loginInfo)
        .subscribe(result => {
          doSomething();
        });
    }
    

    where the only difference is subscribe() instead of then() and if the user of the library prefers the reactive style he will prefer using subscribe() like he is used to.

提交回复
热议问题