angular – rxjs / Observable:获取第一个流后运行一次函数(连
发布时间:2020-12-17 17:35:35 所属栏目:安全 来源:网络整理
导读:首先,抱歉长标题. 我试图从angularfire2订阅forEach的连续流数组,但我还想在确认第一组数据进入后运行一个函数: this.people.forEach((person) = { person.items = this.database.list('/items' + person.key); person.items.subscribe((data) = {person.it
首先,抱歉长标题.
我试图从angularfire2订阅forEach的连续流数组,但我还想在确认第一组数据进入后运行一个函数: this.people.forEach((person) => { person.items = this.database.list('/items' + person.key); person.items.subscribe((data) => {person.itemsList = data}); }); myIntendedFunction(); 有没有办法放置myIntendedFunction(),以便: >它在每个人收到第一个数据流后运行,并且 解决方法
如果您不希望第一次请求发生两次,则执行起来会有点复杂:
const connectables: ConnectableObservable<any>[] = []; this.people.forEach(person => { person.items = this.database.list('/items' + person.key); const connectable = person.items.publish(); connectables.push(connectable); connectable.subscribe((data) => {person.itemsList = data}); }); Observable.zip(...connectables).take(1).subscribe(myIntendedFunction); connectables.forEach(c => c.connect()); 这里发生的是:publish()的效果基本上是您可以多次订阅相同的数据流.在调用connect()之前,不会调用订阅函数. zip()等待每个传递的observable发出一个项目,并作为一个数组一次性发出这些项目.我们只希望这发生在第一组项目上,所以我们只需要(1). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |