
直接给出判断,SAP UI5 自身没有一个名称叫switchMap、并且能够与 RxJSswitchMap一一对应的原生 Operator。SAP UI5 的事件系统、Binding 系统、Promise异步调用以及OData Model都能覆盖switchMap的部分使用场景,但它们并没有组成 RxJS 那种完整的 Observable 管道体系。要在 SAP UI5 里得到真正接近switchMap的效果,需要先明确我们追求的是哪一层语义,是只让最新结果生效,还是连前一个尚未结束的异步任务也真正取消。两者看起来很像,在网络请求、Busy 状态、异常处理和后端负载上却有明显差异。之所以容易把这件事看混,是因为switchMap表面上的行为非常简单。外层 Observable 每产生一个值,switchMap调用映射函数得到一个新的内部 Observable,然后订阅这个内部 Observable。当外层又产生新值,而前一个内部 Observable 还没有完成时,switchMap会取消对旧内部 Observable 的订阅,再转向新的内部 Observable。RxJS 维护者对这一点有很直接的解释,新的值进入switchMap后,旧的内部订阅会执行unsubscribe。但unsubscribe能不能进一步取消 HTTP 请求,要看内部 Observable 有没有把取消订阅与底层请求取消连接起来。把