Angular2可观察和无极

内德

我开始使用Angular2 Observable,但我找不到类似的东西.then,我用用Promises

这就是我要完成的。

来自header.component.ts的代码

public login() {
    this._user = AuthService.getInstance().login(this._loginInfo);
}

来自auth.service.ts的代码

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

有了promise,login函数将返回Promise,最终将转换为服务器的实际响应。但是使用Observable,这将无法正常工作。

有没有办法做类似的事情?我想避免需要把内部认购的componentlogin功能。我希望能够完成服务中的所有工作,并将实际对象返回给component

此外,我试图创建Promise,用toPromise的,但我不断收到toPromise is not a function

ps _httpClient是我对angular2 http的包装,在其中我通过添加一些标头等来准备请求。

编辑

return this._httpClient.post('LoginAction', credentials)
  .map(res => res.json())
  .toPromise().    <-- i keep getting that it is not a function
  then(user => {
    return new User(user);
});

通过这样做,我的组件将获得对象(这是它所需要的),并且在服务中我可以做其他事情(例如,一旦我登录他,将用户保存到localstorage)。

然后我切换到Promise,因为与这样做Observable不起作用(或者我做错了)?

我看到返回的对象是Observable的(在调用toPromise之前),但是我确实没有看到toPromise函数。

贡特·佐赫鲍尔(GünterZöchbauer)

当您致电时subscribe(...)Subscription会传回没有的toPromise()如果将代码从subscribe移到map,则可以使用toPromise()代替subscribe

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

呼叫者将获得一个Promise他可以使用来获得价值的地方

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

但是如果省略`.toPromise(),并且调用方像这样使用它,则会得到相同的结果

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

唯一的区别在于subscribe()then()并且如果库的用户更喜欢反应式样式,那么他将更喜欢subscribe()像过去那样使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular2可观察

来自分类Dev

angular2 * ngfor和嵌套可观察

来自分类Dev

Angular2 可观察和访问后响应

来自分类Dev

Angular2 ChangeDetection还是可观察的?

来自分类Dev

Angular2可观察滤镜

来自分类Dev

Angular2可观察与可承诺

来自分类Dev

Angular2中的可观察对象

来自分类Dev

Angular2 http调用和典型的可观察到的问题

来自分类Dev

如何在Angular2的可观察对象中创建可观察对象

来自分类Dev

可观察变量的Angular2 Observable.forkJoin-ReferenceError:未定义可观察

来自分类Dev

Angular2:子属性更改时更新可观察对象(嵌套的可观察对象)

来自分类Dev

Angular2合并可观察对象

来自分类Dev

Angular2全局变量可观察

来自分类Dev

在Angular2中共享可观察/主题

来自分类Dev

Angular2:可观察的订阅与单例成员

来自分类Dev

Angular2 @ TypeScript可观察到的错误

来自分类Dev

Angular2如何清空可观察流

来自分类Dev

angular2 rxjs可观察到的forkjoin

来自分类Dev

Angular2:可观察到的回报承诺

来自分类Dev

Angular2如何清空可观察流

来自分类Dev

Angular2 TypeScript可观察到的问题

来自分类Dev

angular2 rxjs可观察到的forkjoin

来自分类Dev

角度可观察的Angular2异步管道

来自分类Dev

角度可观察的Angular2异步管道

来自分类Dev

angular2将事件绑定到可观察对象

来自分类Dev

angular2可观察的onError不是函数

来自分类Dev

Angular2可观察到的回调

来自分类Dev

Angular2 在特定时间触发可观察

来自分类Dev

Angular2:如何正确地在服务和组件内部订阅可观察的Http.post?