运行 不考虑存在的可观察对象的代码,但如果它们存在则等待它们?
Running code regardless of observables existing, but waiting for them if they do?
我有以下代码:
array1.foreach(a => {
if (a === whatever) {
function1.subscribe();
}
});
array2.foreach(b => {
if (b === whatever) {
function2.subscribe();
}
});
function3();
如何确保 function3
总是被调用,但是如果 function1
and/or function2
被调用,它只会在 Observables 完成后被调用?
您可以根据您的条件创建一个 Observables
数组,然后添加另一个 of(true)
以确保如果没有 Observables
添加到数组中,combineLatest
运营商无论如何工作。您的函数 function1()
和 function2()
必须 return 和 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();
});
我有以下代码:
array1.foreach(a => {
if (a === whatever) {
function1.subscribe();
}
});
array2.foreach(b => {
if (b === whatever) {
function2.subscribe();
}
});
function3();
如何确保 function3
总是被调用,但是如果 function1
and/or function2
被调用,它只会在 Observables 完成后被调用?
您可以根据您的条件创建一个 Observables
数组,然后添加另一个 of(true)
以确保如果没有 Observables
添加到数组中,combineLatest
运营商无论如何工作。您的函数 function1()
和 function2()
必须 return 和 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();
});