gpt4 book ai didi

javascript - 在调用另一个流之前等待一个流

转载 作者:行者123 更新时间:2023-12-03 06:24:35 26 4
gpt4 key购买 nike

如何等待一个流(例如 StreamA)返回非空值,然后调用 StreamB 订阅函数。我对 StreamA 的值(value)不是特别感兴趣。反过来,我试图获取 StreamB 的值,该值可能在 StreamA 返回非空值之前已更新,并且可能没有任何新事件。

我尝试过,可暂停,通过查看以下内容:RxJS: How can I do an "if" with Observables? ,但不幸的是无法让它工作。这是因为,没有导出类 pausable,rxjs v 5.0.0-beta.6。

根据答案,这就是我得出的结论。

导出类 AuthService { userModel: FirebaseListObservable = this.af.database.list(/users); 构造函数(私有(private) af:AngularFire){

    var user = this.currentAuthor();
var userStream = user;

this.af.auth.flatMap((d) => { console.log(d);return this.userModel.publishReplay(1); });

this.userModel
.subscribe((data) => {
var flag = false;
data.forEach((item) => {
if (item.$key && item.$key === user.uid) {
flag = true;
return;
}
});

if (flag) {
console.log('hello');
} else {
this.userModel.push({
firstName: user.auth.displayName.substr(0, user.auth.displayName.lastIndexOf(' ')),
lastName: user.auth.displayName.substr(user.auth.displayName.lastIndexOf(' '), user.auth.displayName.length),
displayPic: user.auth.photoURL,
provider: user.provider,
uid: user.uid
}
);
}
})
}
public currentAuthor():FirebaseAuthState {
return this.af.auth.getAuth();
}

希望我能说清楚。就连我现在也开始迷茫了。 :p。

我是 rxjs 和响应式(Reactive)编程的新手。并且,任何帮助将不胜感激。

顺便说一句,感谢您的光临。 :)

最佳答案

我想你所说的貌似合理是指可暂停吗?我不确定你到底想在这里实现什么(控制流程?)。但是,如果您希望在streamA产生值之后获得streamB值,那么您可以使用flatMap

streamA.flatMapLatest(function (_){返回streamB})

无论何时 streamA 发出,您都应该得到 streamB 在该时间之后发出的值。

如果您想要包含该时间之前发出的最后一个 B 的值,您可以使用 streamBB = streamB.publishReplay(1)

streamA.flatMapLatest(function (_){返回streamBB})

尚未对其进行测试,因此如果有效,请随时通知我。

关于javascript - 在调用另一个流之前等待一个流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38713552/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com