我在Angular 2项目中使用RxJs版本5.我想创建一些observable,但我不希望立即调用observable.
在版本4中,您可以使用(例如)受控命令或Pausable Buffers来控制调用.但是,该功能尚未在版本5中提供.
如何在RxJs 5中获得这种功能?
我的最终目标是对创建的observable进行排队并逐个调用它们.只有在成功处理上一个时才会调用下一个.当一个失败时,队列被清空.
编辑
通过@Niklas Fasching的评论,我可以使用Publish操作创建一个可行的解决方案.
// Queue to queue operations
const queue = [];
// Just a function to create Observers
function createObserver(id): Observer {
return {
next: function (x) {
console.log('Next: ' + id + x);
},
error: function (err) {
console.log('Error: ' + err);
},
complete: function () {
console.log('Completed');
}
};
};
// Creates an async operation and …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Ionic2和Firebase实现无限滚动.
我使用AngularFire2.我想要做的是将新项添加到提取的列表,而不是重新加载整个列表.
let query$:Observable<any> = this.af.database.list(`quests/`, {
query: {
orderByChild: 'date_published',
limitToFirst: this.recentChunkLimit$ //Subject where I push new limit length
}
}).publishReplay(1).refCount();
Run Code Online (Sandbox Code Playgroud)
但是,当我查询这样的列表时,每次通过websockets重新加载整个列表,使每次下一次更新变得越来越慢.以下是网络websockets选项卡的屏幕截图:
而且我注意到每个下一个块的请求都是2次(尽管我放了publishReplay).它发生在我使用AngularFire2的所有应用程序中.我可能会误解一些事情.我当然需要一些澄清.
// ==========编辑============
现在,我以某种方式设法实现我想要的,而不是每次都重新加载整个列表.不是最好的实现,但它的工作原理.基本上,我创建了一个可观察的数组,并通过订阅下一个chunk observable(其中我也得到了最后一个元素)来加载新的值.然而,后来的问题仍然存在 - 在套接字显示中,我获得了2次请求数据.