Questions tagged «rxjs»

JavaScript的响应式扩展(RxJS)是一组库,用于使用可观察的集合和Array Extras样式组成来组成异步和基于事件的程序。


21
Angular / RxJs我应该何时退订`Subscription`
我应该何时存储Subscription实例并unsubscribe()在NgOnDestroy生命周期中调用,何时可以忽略它们? 保存所有订阅会在组件代码中带来很多麻烦。 HTTP客户端指南会忽略这样的订阅: getHeroes() { this.heroService.getHeroes() .subscribe( heroes => this.heroes = heroes, error => this.errorMessage = <any>error); } 同时,《路线与导航指南》指出: 最终,我们将导航到其他地方。路由器将从DOM中删除此组件并销毁它。我们需要在此之前进行自我清理。具体来说,我们必须在Angular销毁组件之前取消订阅。否则可能会导致内存泄漏。 我们取消订阅Observable该ngOnDestroy方法。 private sub: any; ngOnInit() { this.sub = this.route.params.subscribe(params => { let id = +params['id']; // (+) converts string 'id' to a number this.service.getHero(id).then(hero => this.hero = hero); }); } …

9
BehaviorSubject与Observable?
我正在研究Angular RxJs模式,但不了解a BehaviorSubject和an 之间的区别Observable。 根据我的理解,a BehaviorSubject是可以随时间变化的值(可以订阅,订阅者可以接收更新的结果)。这似乎与的目的完全相同Observable。 什么时候使用Observablevs BehaviorSubject?在那里使用效益BehaviorSubject上的Observable,反之亦然?

19
带有TypeScript错误http.get(…).map的角度HTTP GET不是[null]中的函数
我在Angular中遇到HTTP问题。 我只想要GET一个JSON列表并在视图中显示它。 服务等级 import {Injectable} from "angular2/core"; import {Hall} from "./hall"; import {Http} from "angular2/http"; @Injectable() export class HallService { public http:Http; public static PATH:string = 'app/backend/' constructor(http:Http) { this.http=http; } getHalls() { return this.http.get(HallService.PATH + 'hall.json').map((res:Response) => res.json()); } } 在中,HallListComponent我getHalls从服务中调用方法: export class HallListComponent implements OnInit { public halls:Hall[]; …
334 angular  rxjs 

21
在RxJs 5中共享Angular Http网络调用结果的正确方法是什么?
通过使用Http,我们调用了一个方法,该方法进行网络调用并返回可观察到的http: getCustomer() { return this.http.get('/someUrl').map(res => res.json()); } 如果我们采取这种可观察的方法,并向其添加多个订阅者: let network$ = getCustomer(); let subscriber1 = network$.subscribe(...); let subscriber2 = network$.subscribe(...); 我们要做的是确保这不会引起多个网络请求。 这似乎是一种不寻常的情况,但实际上非常普遍:例如,如果调用者订阅了可观察对象以显示错误消息,并使用异步管道将其传递给模板,则我们已经有两个订阅者。 在RxJs 5中这样做的正确方法是什么? 即,这似乎工作正常: getCustomer() { return this.http.get('/someUrl').map(res => res.json()).share(); } 但这是RxJs 5中惯用的方式吗?还是我们应该做其他事情呢? 注意:根据Angular 5 new HttpClient,.map(res => res.json())所有示例中的部分现在都已无用,因为默认情况下现在假定JSON结果。


6
将承诺转化为可观察的
我试图把头围在可观察物上。我喜欢可观测技术解决开发和可读性问题的方式。如我所读,好处是巨大的。 HTTP和集合上的可观察对象似乎很简单。我怎样才能将这样的东西转换为可观察的模式。 这是从我的服务组件提供身份验证的。我希望它可以像Angular2中的其他HTTP服务一样工作-支持数据,错误和完成处理程序。 firebase.auth().createUserWithEmailAndPassword(email, password) .then(function(firebaseUser) { // do something to update your UI component // pass user object to UI component }) .catch(function(error) { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; // ... }); 在这里的任何帮助将不胜感激。我唯一的替代解决方案是创建EventEmitter。但是我想这是在服务部分做事的糟糕方法


10
如何获取RxJS Subject或Observable的当前值?
我有一个Angular 2服务: import {Storage} from './storage'; import {Injectable} from 'angular2/core'; import {Subject} from 'rxjs/Subject'; @Injectable() export class SessionStorage extends Storage { private _isLoggedInSource = new Subject<boolean>(); isLoggedIn = this._isLoggedInSource.asObservable(); constructor() { super('session'); } setIsLoggedIn(value: boolean) { this.setItem('_isLoggedIn', value, () => { this._isLoggedInSource.next(value); }); } } 一切正常。但是我还有另一个不需要订阅的组件,它只需要在某个时间点获取isLoggedIn的当前值即可。我怎样才能做到这一点?
206 javascript  angular  rxjs 

16
Angular 2 beta.17:类型“ Observable <Response>”上不存在属性“ map”
我刚刚从Angular 2 beta16升级到beta17,这又需要rxjs 5.0.0-beta.6。(此处的更改日志:https : //github.com/angular/angular/blob/master/CHANGELOG.md#200-beta17-2016-04-28)在beta16中,有关Observable / map功能的所有功能都运行良好。升级后出现以下错误,并且在打字稿尝试转换时发生: 属性“ map”在“ Observable”类型上不存在(在我将map与observable一起使用的任何地方) c:/path/node_modules/rxjs/add/operator/map.d.ts(2,16):错误TS2435:环境模块不能嵌套在其他模块或命名空间中。 c:/path/node_modules/rxjs/add/operator/map.d.ts(2,16):错误TS2436:环境模块声明无法指定相对模块名称。 我已经看到了这个问题/答案,但并不能解决问题: Angular2 beta.12和RxJs 5 beta.3的可观察到的错误。 我的appBoot.ts看起来像这样(已经引用了rxjs / map): ///&lt;reference path="./../node_modules/angular2/typings/browser.d.ts"/&gt; import {bootstrap} from "angular2/platform/browser"; import {ROUTER_PROVIDERS} from 'angular2/router'; import {HTTP_PROVIDERS} from 'angular2/http'; [stuff] import 'rxjs/add/operator/map'; import 'rxjs/add/operator/toPromise'; import {enableProdMode} from 'angular2/core'; import { Title } from 'angular2/platform/browser'; …
195 typescript  angular  rxjs 

19
Observable.of不是函数
Observable.of我的项目中的导入功能有问题。我的Intellij看到了一切。在我的代码中,我有: import {Observable} from 'rxjs/Observable'; 在我的代码中,我像这样使用它: return Observable.of(res); 有任何想法吗?
191 angular  rxjs 

6
创建一次性订阅
我需要创建一个对的订阅,该订阅在Observable首次调用时会立即处理掉。 是否有类似的东西: observable.subscribeOnce(func); 我的用例是,我在快速路由处理程序中创建一个预订,每个请求被多次调用。
180 rxjs 

3
Angular2 http.get(),map(),subscribe()和可观察模式-基本理解
现在,我有一个初始页面,其中有三个链接。一旦单击最后一个“朋友”链接,就会启动适当的朋友组件。在这里,我想获取/获取存放在friends.json文件中的朋友列表。到现在为止一切正常。但是,我仍然是使用RxJs的可观察,映射,订阅概念的angular2 HTTP服务的新手。我试图理解它并读了几篇文章,但是直到我投入实际工作之前,我不会正确地理解那些概念。 在这里,我已经制作了plnkr,除了HTTP相关的工作外,该工作都在工作。 普伦克 myfriends.ts import {Component,View,CORE_DIRECTIVES} from 'angular2/core'; import {Http, Response,HTTP_PROVIDERS} from 'angular2/http'; import 'rxjs/Rx'; @Component({ template: ` &lt;h1&gt;My Friends&lt;/h1&gt; &lt;ul&gt; &lt;li *ngFor="#frnd of result"&gt; {{frnd.name}} is {{frnd.age}} years old. &lt;/li&gt; &lt;/ul&gt; `, directive:[CORE_DIRECTIVES] }) export class FriendsList{ result:Array&lt;Object&gt;; constructor(http: Http) { console.log("Friends are being called"); // below code …
170 http  angular  rxjs 

11
返回一个空的Observable
该函数more()应该Observable从get请求返回an export class Collection{ public more = (): Observable&lt;Response&gt; =&gt; { if (this.hasMore()) { return this.fetch(); } else{ // return empty observable } } private fetch = (): Observable&lt;Response&gt; =&gt; { return this.http.get('some-url').map( (res) =&gt; { return res.json(); } ); } } 在这种情况下,我只能在请求hasMore()为true的情况下执行请求,否则我会在subscribe()function 上遇到错误subscribe is not defined,如何返回可观察到的空值? this.collection.more().subscribe( (res) =&gt;{ …

14
Angular-“没有导出成员'可观察'”
打字稿代码: import { Injectable } from '@angular/core'; import { Observable } from 'rxjs/Observable'; import { of } from 'rxjs/observable/of'; import { Hero } from './hero'; import { HEROES } from './mock-heroes'; @Injectable({ providedIn: 'root' }) export class HeroService { constructor() { } getHeroes(): Observable&lt;Hero[]&gt; { return of(HEROES); } } 错误信息: …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.