想了解angular–Rxjssubjectnext或onNext的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于angularjsinjector的相关问题,此外,我们还将为您介绍关于An
想了解angular – Rxjs subject next或onNext的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于angularjs injector的相关问题,此外,我们还将为您介绍关于Angular 8.2.0-next.0 发布、angular – RXJS 5.subscribe()没有参数、angular – RxJS Observable with Subject,通过计时器和combineLatest进行轮询不会触发、angular – rxjs subject switchmap http错误的新知识。
本文目录一览:- angular – Rxjs subject next或onNext(angularjs injector)
- Angular 8.2.0-next.0 发布
- angular – RXJS 5.subscribe()没有参数
- angular – RxJS Observable with Subject,通过计时器和combineLatest进行轮询不会触发
- angular – rxjs subject switchmap http错误
angular – Rxjs subject next或onNext(angularjs injector)
例如,在本教程中
http://blog.angular-university.io/how-to-build-angular2-apps-using-rxjs-observable-data-services-pitfalls-to-avoid/
但我在ng-book中看到了相同的代码
我可以看到
let subject = new Rx.Subject(); subject.subscribe(value => console.log('Received new subject value: ')) subject.next(newValue);
但如果我把代码放在浏览器中我就得到了
subject.next不是一个函数
所以,如果我看看文件
https://github.com/Reactive-Extensions/RxJS/blob/master/doc/gettingstarted/subjects.md
var subject = new Rx.Subject(); subject.subscribe(value => console.log('Received new subject value: ',value)) subject.onNext(2);
你能解释一下教程和书的原因吗?
正在使用下一个?我错过了什么?
另见http://reactivex.io/rxjs/
Angular 8.2.0-next.0 发布
Bug 修复
- core:
undefined
在injectArgs
(#31333)(80ccd6c)中处理 meta ,关闭 CLI#14888 - service-worker:使用
freshness
策略缓存数据组中的不透明响应(#30977)(d7be38f),关闭#30968 - service-worker:当请求超过超时阈值时缓存不透明响应(#30977)(93abc35)
特征
- bazel:允许将自定义 bazel 编译器主机传递给 ngc compile(#31341)(a29dc96)
- bazel:允许传递和重写旧的 bazel 主机(#31381)(11a208f),关闭#31341
angular – RXJS 5.subscribe()没有参数
我正处于订阅一个只有.subscribe()的可观察链的情况下;不会触发可观察的.
但是,如果我添加onNext回调(空或不),可观察的触发器和链处理:.subscribe(()=> {});
谁能解释为什么会出现这种情况?
EDIT2 – 删除了不相关的例子
emptyObserver
,这也应该可以正常工作.
但有可能在某些5.0.0-beta版本中存在与此相关的问题 – 如果您使用其中一个版本,则应更新为更稳定的版本.
const obs$= Rx.Observable.of("Foo") .do(() => console.log("triggered!")); obs$.subscribe(); obs$.subscribe();
<script src="https://unpkg.com/rxjs@5.1.1/bundles/Rx.min.js"></script>
angular – RxJS Observable with Subject,通过计时器和combineLatest进行轮询不会触发
这是我的代码:
getItems(pagination: Subject<Pagination>): Observable<ListResult<Item>> { let params: URLSearchParams = new URLSearchParams(); return Observable .timer(0,5000) .combineLatest( pagination,(timer,pagination) => pagination ) .startWith({offset: 0,limit: 3}) .switchMap(pagination => { params.set('skip',pagination.offset.toString()); params.set('limit',pagination.limit.toString()); return this.authHttp.get(`${environment.apiBase}/items`,{search: params}) }) .map(response => response.json() as ListResult<Item>) .catch(this.handleError); }
预期的行为是:
HTTP请求每5秒触发一次,当用户更改页面时.
这是发生的事情:
第一个HTTP请求被触发,但是没有其他请求被发送到服务器UNTIL使用分页.
在第一次使用分页后,轮询也开始工作.
这是我第一次使用Observables,所以我很确定我错过了什么,但我看不出它可能是什么.
我也试过这种方法(也许它在startWith中缺少计时器计数器),但它没有改变任何东西.
[...] .combineLatest( pagination ) .startWith([0,{offset: 0,limit: 3}]) [...]
解决方法
您的演示只生成一个请求,因为您正在使用.startWith(). combineLatest()永远不会发出,因为分页是一个主题,它可能永远不会发出任何项目.
所以一个选择是移动.startWith():
.combineLatest( pagination.startWith({offset: 0,limit: 3}),pagination) => pagination )
但也许这对你没什么帮助,因为你忽略了来自计时器的所有项目()而你只是使用了分页.所以也许你可以使用merge()从其中一个源刷新列表.然后timer()独立地增加偏移量.
Observable .timer(0,1000) .map(i => { return {offset: i*3,limit: 3}}) .merge(pagination.startWith({offset: 0,limit: 3})) .switchMap(pagination => { return Observable.of(pagination).delay(200) }) .subscribe(val => console.log(val));
angular – rxjs subject switchmap http错误
问题是当我处理http错误(如超时)时,在html中调用的方法_postMPCHC.next(…)不再起作用了…
我是否需要在出错时重新创建订阅?怎么样 ?
import {Component} from '@angular/core'; import {NavController,NavParams,Toast} from 'ionic-angular'; import {Http,URLSearchParams} from '@angular/http'; import {AppSettings} from '../../appSettings'; import {Subject} from 'rxjs/Subject'; @Component({ templateUrl: 'build/pages/video/video.html' }) export class VideoPage { _postMPCHC: any= new Subject(); constructor(private http: Http,private nav: NavController) { this.defineHttp(); } defineHttp() { var sub = this._postMPCHC.switchMap((x: string) => { let params: URLSearchParams = new URLSearchParams(); params.set('token',AppSettings.API_TOKEN); params.set('prog','mhz'); params.set('prog','mpchc'); params.set('action',x); return this.http.get(AppSettings.API_ENDPOINT,{ search: params }) }).timeout(5000,new Error('timeout exceeded')).subscribe(x => { },error => { let toast = Toast.create({ message: 'Server response: ' + <any>error,duration: 3000,position: 'middle' }); this.nav.present(toast); }) } }
解决方法
请参阅此文章 – Error handling. What to do when error kills stream.
因此,在您的情况下,您可以通过添加.pipe(catchError(…))返回this.http.get(AppSettings.API_ENDPOINT,{search:params})行来处理错误 – 它将保持您的mai流活着并且将会捕获http错误
我们今天的关于angular – Rxjs subject next或onNext和angularjs injector的分享就到这里,谢谢您的阅读,如果想了解更多关于Angular 8.2.0-next.0 发布、angular – RXJS 5.subscribe()没有参数、angular – RxJS Observable with Subject,通过计时器和combineLatest进行轮询不会触发、angular – rxjs subject switchmap http错误的相关信息,可以在本站进行搜索。
本文标签: