在可观察序列中使用外部变量的问题
Problems with using external variables in an observable sequence
在序列内部使用可观察序列外部的变量会出现什么问题?
例如:
updateCar(newCar: any): Observable<any> {
return of(...).pipe(
switchMap(
(value: any) => {
if (newCar.has4Wheels && value.lovePizza) {
// return a 4 wheel observable
} else {
// return a not 4 wheel observable
}
}
),
switchMap(
(value: any) => {
if (newCar.has4Windows && !value.lovePizza) {
// return a 4 window observable
} else {
// return a 2 window observable
}
}
)
);
}
我知道上面的例子很奇怪,但我只是用它来问问题。
在序列内部使用 newCar
会出现什么问题,就像在示例中使用它时在序列外部使用一样?如果没有问题,那就太好了!我就是觉得这个用法有问题。
我觉得没什么(至少在你不修改的情况下newCar
)。
的确,您可以重写它并从以下示例开始:
of([whatever, newCar])
.pipe(
switchMap(([whatever, newCar]) => {
...
})
)
...
但我认为这没有必要,只会让事情变得更复杂,而没有任何实际好处。
在序列内部使用可观察序列外部的变量会出现什么问题?
例如:
updateCar(newCar: any): Observable<any> {
return of(...).pipe(
switchMap(
(value: any) => {
if (newCar.has4Wheels && value.lovePizza) {
// return a 4 wheel observable
} else {
// return a not 4 wheel observable
}
}
),
switchMap(
(value: any) => {
if (newCar.has4Windows && !value.lovePizza) {
// return a 4 window observable
} else {
// return a 2 window observable
}
}
)
);
}
我知道上面的例子很奇怪,但我只是用它来问问题。
在序列内部使用 newCar
会出现什么问题,就像在示例中使用它时在序列外部使用一样?如果没有问题,那就太好了!我就是觉得这个用法有问题。
我觉得没什么(至少在你不修改的情况下newCar
)。
的确,您可以重写它并从以下示例开始:
of([whatever, newCar])
.pipe(
switchMap(([whatever, newCar]) => {
...
})
)
...
但我认为这没有必要,只会让事情变得更复杂,而没有任何实际好处。