如何将函数动态传递给 angular forkJoin()?
How to pass functions dynamically to angular forkJoin()?
我正在向 sources 数组动态传递两个函数,但是当只传递一个函数时我遇到了问题。
如何模拟空的 observable,因此如果传递给第二个函数而不是将其映射到 a,而是映射到 b。
let sources = [];
if (!isNullOrUndefined(email_address)) {
sources.push(this.commonService.lookUpEmailAddress(emailParameters));
}
if (!isNullOrUndefined(telephone_number)) {
sources.push(this.commonService.lookUpTelephoneNumber(telephoneParameters));
}
forkJoin(...sources)
.subscribe(
([a, b]) => { // do stuff here }
你总是可以有两个 observable,有些像
sources=[
!isNullOrUndefined(email_address)?
this.commonService.lookUpEmailAddress(emailParameters):
of(null),
!isNullOrUndefined(telephone_number)?
this.commonService.lookUpTelephoneNumber(telephoneParameters):
of(null)
]
然后在订阅中检查 a==null 或 b==null
您可以传递一个包含数组的变量,而不是显式数组 [a, b]
。尝试以下
forkJoin(...sources).subscribe(
(response) => {
// response[0] - a - result from 1st observable in sources
// response[1] - b - result from 2nd observable in sources (don't access response[1] if there is no 2nd observable)
}
);
现在您可以访问已知存在的结果元素。例如。如果 sources
数组中没有第二个元素,则 response[1]
未定义。
我正在向 sources 数组动态传递两个函数,但是当只传递一个函数时我遇到了问题。
如何模拟空的 observable,因此如果传递给第二个函数而不是将其映射到 a,而是映射到 b。
let sources = [];
if (!isNullOrUndefined(email_address)) {
sources.push(this.commonService.lookUpEmailAddress(emailParameters));
}
if (!isNullOrUndefined(telephone_number)) {
sources.push(this.commonService.lookUpTelephoneNumber(telephoneParameters));
}
forkJoin(...sources)
.subscribe(
([a, b]) => { // do stuff here }
你总是可以有两个 observable,有些像
sources=[
!isNullOrUndefined(email_address)?
this.commonService.lookUpEmailAddress(emailParameters):
of(null),
!isNullOrUndefined(telephone_number)?
this.commonService.lookUpTelephoneNumber(telephoneParameters):
of(null)
]
然后在订阅中检查 a==null 或 b==null
您可以传递一个包含数组的变量,而不是显式数组 [a, b]
。尝试以下
forkJoin(...sources).subscribe(
(response) => {
// response[0] - a - result from 1st observable in sources
// response[1] - b - result from 2nd observable in sources (don't access response[1] if there is no 2nd observable)
}
);
现在您可以访问已知存在的结果元素。例如。如果 sources
数组中没有第二个元素,则 response[1]
未定义。