angular – 可观察并承诺在rxjs中兼容吗?
在官方
angular2 tutorial中它包含以下代码
getHeroes(): Promise<Hero[]> { return Promise.resolve(HEROES); } ngOnInit(): void { this.route.params .switchMap((params: Params) => this.heroService.getHero(+params['id'])) .subscribe(hero => this.hero = hero); console.log(this.route.params); console.log(this.route.params .switchMap((params: Params) => this.heroService.getHero(+params['id']))); } 现在我们知道this.route.params返回一个可观察的,而 这是rxjs switchmap的签名 switchMap(project: function: Observable,resultSelector: function(outerValue,innerValue,outerIndex,innerIndex): any): Observable 我们看到第一个参数采用发出可观察的函数. 但是在上面的例子中,我们实际上传递了一个发出promise的函数. 它们是否相互兼容? 此外还有控制台 console.log(this.route.params .switchMap((params: Params) => this.heroService.getHero(+params['id']))); 输出 AnonymousSubject {_isScalar: false,observers: Array[0],closed: false,isStopped: false,hasError: false…} 不应该将_isScalar设置为true,因为该函数会输出一个承诺吗? 解决方法
在许多地方,RxJS API接受
ObservableInput :
export type ObservableInput<T> = SubscribableOrPromise<T> | ArrayLike<T>; 这可以是一个可观察的,一个promise或一个类似数组的可迭代对象. 在您的问题中包含的代码中,传递给 export function switchMap<T,R>( this: Observable<T>,project: (value: T,index: number) => ObservableInput<R> ): Observable<R>; switchMap实现将看到promise被转换为observable. 关于结果observable的内部_isScalar属性,当promise解析并且解析的值存储在observable中时,它将被设置为true.我的理解是,在RxJS中,标量不是指将要发射的值的数量,而是指所述值是否可用于立即发射. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在scala中trait中使用的抽象值有什么问题吗?
- CentOS 7 Docker镜像和语言环境编译
- bash – “less”中的“Chop lines”无效
- angularjs – 如何触发UI-Router View加载事件?
- Ace_Admin_Bootstrap 模板跳转后记住侧边栏状态
- bash – Shell脚本将文本附加到每个文件?
- 带有角度7的Ng-fullcalendar
- twitter-bootstrap – 使用Bootstrap,但文本不响应
- bash – 如何从文件夹中删除除少数文件夹以外的所有文件/文
- 【K8S】基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持续