angular - 不管 observables 是否存在都运行代码,但如果存在则等待它们?
问题描述
我有以下代码:
array1.foreach(a => {
if (a === whatever) {
function1.subscribe();
}
});
array2.foreach(b => {
if (b === whatever) {
function2.subscribe();
}
});
function3();
我如何确保它function3
总是被调用,但如果function1
和/或被function2
调用,它只会在 Observables 完成后调用?
解决方案
您可以根据您的条件创建一个数组,Observables
然后添加另一个数组,of(true)
以确保如果没有Observables
添加到数组中,combineLatest
运算符仍然可以工作。您的函数function1()
并且function2()
必须返回一个Observable
.
const requestsArr: Observable<any>[] = [];
array1.foreach(a => {
if(a === whatever){
requestsArr.push( function1() );
}
});
array2.foreach(b => {
if(b === whatever){
requestsArr.push( function2() );
}
});
requestsArr.push( of(true) );
combineLatest(requestsArr).subscribe( (values: any[]) => {
...//do something with values
function3();
});
推荐阅读
- nginx - 在 nginx.conf 中使用环境变量或参数
- android - 从房间中的实体中检索列表类型字段
- c# - 在对象列表中查找第一个匹配的字符串值
- python - 在 Pandas 中使用 np.where 后如何获取剩余的数据帧?
- javascript - AJAX 针对单个锚元素
- javascript - 我想从我的 select2() 库的下拉列表中禁用剩余的选择选项
- seal - Microsoft SEAL:减去两个 PolyCRT 组成的密文后需要负值
- bash - 如何检查文件或目录的大小是否大于 Bash 中的值?
- c# - .NET Core DI 使用自定义委托解析键控服务返回 null
- xml - If else odoo qweb 中的条件