Tag: rxjs

Promise.all与RxJS Observables的行为?

在Angular 1.x中,我有时需要做出多个http请求,并对所有的响应进行处理。 我将所有的承诺放在一个数组中,并调用Promise.all(promises).then(function (results) {…}) 。 Angular 2的最佳实践似乎指向使用RxJS的Observable来代替http请求中的承诺。 如果我有两个或更多不同的Observable从http请求创build,他们相当于Promise.all() ?

Rx.Observable subscribe和forEach有什么区别?

在像这样创build一个Observable之后 var source = Rx.Observable.create(function(observer) {…}); 订阅有什么区别 source.subscribe(function(x) {}); 和forEach source.forEach(function(x) {});

如何在rxjs中返回一个空的observable

函数more()应该从get请求中返回一个Observable export class Collection{ public more = (): Observable<Response> => { if (this.hasMore()) { return this.fetch(); } else{ // return empty observable } } private fetch = (): Observable<Response> => { return this.http.get('some-url').map( (res) => { return res.json(); } ); } } 在这种情况下,我只能做一个请求,如果hasMore()是真的,否则我得到一个错误的subscribe()函数subscribe is not defined ,我怎样才能返回一个空的可观察? this.collection.more().subscribe( (res) =>{ console.log(res); }, (err) =>{ console.log(err); […]

TypeError:search.valueChanges.debounceTime不是一个函数

我只是学习angular2。 在应用input变化的时候,我得到了错误。 app.ts: export class AppComponent { form: ControlGroup; constructor(fb: FormBuilder) { this.form = fb.group({ search: [] }); var search = this.form.find('search'); search.valueChanges .debounceTime(400) .map(str => (<string>str).replace(' ','‐')) .subscribe(x => console.log(x)); }; } 错误: 如何解决这个问题? 我错过了什么吗? Plunker演示 注意我不能生产任何东西,因为我现在正在写第一次冲锋者。 我只在plunker写了我的app.ts代码。 我已经从我的本地电脑显示错误的截图。 如果你告诉我在plunker上运行angular2项目的方式,我也会很感激。

Angular 2:为什么在检索路由参数时使用switchMap?

我正在阅读关于路由和导航的Angular Guide 。 他们使用这个代码来检索路由器的参数'id'并用它来获得service服务的英雄: ngOnInit() { this.route.params .switchMap((params: Params) => this.service.getHero(+params['id'])) .subscribe((hero: Hero) => this.hero = hero); } 但是我不明白在上面的代码中使用switchMap操作符的目的是什么。 下面的代码不会一样吗? ngOnInit() { this.route.params // NOTE: I do not use switchMap here, but subscribe directly .subscribe((params: Params) => { this.service.getHero(+params['id']).then(hero => this.hero = hero) }); }

使用rxjs处理刷新令牌

因为我已经开始使用angular2了,我已经设置了我的服务来返回T的Observable。在服务中,我将调用map(),使用这些服务的组件只使用subscribe()等待响应。 对于这些简单的情况,我真的不需要深入到rxjs,所以一切都好。 我现在想要实现以下内容:我正在使用刷新令牌的Oauth2身份validation。 我想构build一个所有其他服务将使用的api服务,并且在返回401错误时将透明地处理刷新令牌。 因此,在401的情况下,我首先从OAuth2端点获取新令牌,然后使用新令牌重试我的请求。 下面是可以正常工作的代码,并承诺: request(url: string, request: RequestOptionsArgs): Promise<Response> { var me = this; request.headers = request.headers || new Headers(); var isSecureCall: boolean = true; //url.toLowerCase().startsWith('https://'); if (isSecureCall === true) { me.authService.setAuthorizationHeader(request.headers); } request.headers.append('Content-Type', 'application/json'); request.headers.append('Accept', 'application/json'); return this.http.request(url, request).toPromise() .catch(initialError => { if (initialError && initialError.status === 401 && isSecureCall === true) […]

如何创build一个类似于Angular 2中的http的静态数据的Observable?

我有一个服务,有这个方法: export class TestModelService { public testModel: TestModel; constructor( @Inject(Http) public http: Http) { } public fetchModel(uuid: string = undefined): Observable<string> { if(!uuid) { //return Observable of JSON.stringify(new TestModel()); } else { return this.http.get("http://localhost:8080/myapp/api/model/" + uuid) .map(res => res.text()); } } } 在组件的构造函数中,我是这样订阅的: export class MyComponent { testModel: TestModel; testModelService: TestModelService; constructor(@Inject(TestModelService) testModelService) { this.testModelService […]

Knockout.js和Rx.js有什么区别?

有谁知道RxJs和Knockout之间的区别? 对我来说,他们似乎试图解决同样的问题,build立一个事件驱动的用户界面。 但是,有两个经验的人,他们有什么不同/他们是如何相似? 你能描述一些关于他们的东西来帮助我select吗?

如何在订阅时获得观察者的“当前”价值

我在RxJs的某个特定部分上苦苦挣扎:当您订阅Observable时,您只订阅了该Stream中的任何未来事件。 与承诺相比,如果承诺已经解决,那么无论何时调用then() ,都将获得该值。 这是一个代码示例: var subject = new Rx.Subject(); subject.onNext('old value'); subject.onNext('before subscription'); subject.subscribe(function(val) { document.write(val); }); subject.onNext('after subscription'); <script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/2.3.24/rx.all.js"></script> 我期望看到“订阅之前”和“订阅之后”都打印出来,尽pipe对我来说“旧价值”会下降是有道理的。 但似乎RxJs不这样工作(只有“订阅后”打印)。 我怎样才能得到我以后的结果?

Observabletypes错误:无法读取undefined的属性

Angular 2应用程序,我得到一个错误:不能读取未定义的属性“标题”。 这是一个非常简单的组件,只是为了获得最低限度的工作。 它命中我的API控制器(好奇地多次),它似乎击中了我的代码中返回对象后的callback区域。 我的console.log输出我期望的对象。 这是完整的错误: TypeError: Cannot read property 'title' of undefined at AbstractChangeDetector.ChangeDetector_About_0.detectChangesInRecordsInternal (eval at <anonymous> (http://localhost:55707/lib/angular2/bundles/angular2.dev.js:10897:14), <anonymous>:31:26) at AbstractChangeDetector.detectChangesInRecords (http://localhost:55707/lib/angular2/bundles/angular2.dev.js:8824:14) at AbstractChangeDetector.runDetectChanges (http://localhost:55707/lib/angular2/bundles/angular2.dev.js:8807:12) at AbstractChangeDetector._detectChangesInViewChildren (http://localhost:55707/lib/angular2/bundles/angular2.dev.js:8877:14) at AbstractChangeDetector.runDetectChanges (http://localhost:55707/lib/angular2/bundles/angular2.dev.js:8811:12) at AbstractChangeDetector._detectChangesContentChildren (http://localhost:55707/lib/angular2/bundles/angular2.dev.js:8871:14) at AbstractChangeDetector.runDetectChanges (http://localhost:55707/lib/angular2/bundles/angular2.dev.js:8808:12) at AbstractChangeDetector._detectChangesInViewChildren (http://localhost:55707/lib/angular2/bundles/angular2.dev.js:8877:14) at AbstractChangeDetector.runDetectChanges (http://localhost:55707/lib/angular2/bundles/angular2.dev.js:8811:12) at AbstractChangeDetector.detectChanges (http://localhost:55707/lib/angular2/bundles/angular2.dev.js:8796:12) 服务(about.service.ts): import {Http} from 'angular2/http'; import {Injectable} from […]