在我的observable
源中,我接收到一些事件,这些事件要针对某些异步操作进行过滤。
例如:
s$.pipe(
map((x) => x + 1),
filter((x) => alreadyExist(x)))
.subscribe(...)
如果
alreadyExist
是异步操作,(检查该值是否存在于持久性存储中),它返回一个布尔值。
假设
alreadyExist
返回一个承诺,该承诺会解析为布尔值,如何在退货时
wait
?请注意,我需要保持不变的价值。
在过滤器返回之前,
async-await
无效,并且已执行订阅。 最佳答案
您可以尝试我的建议-使用switchMap
管道
let isAlreadyExist = false; // "global" variable :)
s$.pipe(
map((x) => x + 1),
switchMap(async (x) => {
isAlreadyExist = await alreadyExist(x); // make sure alreadyExist is a promise func
return x; // "do" do nothing with your data
}),
filter((x) => isAlreadyExist)) // isAlreadyExist is value of alreadyExist func
.subscribe(...)
或者您可以阅读有关
defer
的RxJS Observable
的信息。关于javascript - 如何等待Promise解决rxjs过滤器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51328365/