我在组件(控制器)中描述了方法:
public requestPassportData(): void {
const th = this;
const data = {
get_scanned_data: true
};
Observable.timer(0, 1000)
.switchMap(() => this.requestMethods.requestPassportData(data))
.takeWhile(() => {
return (
th.formRegister.currentForm().index == 1 ||
th.formRegister.currentForm().index == 2 ||
th.formRegister.currentForm().index == 3
);
})
.subscribe(response => {});
}
如果要调用方法requestPassportData()
五次,它将每秒钟发送五个请求到服务器。为什么switchMap不会取消最后一个观察者?
答案 0 :(得分:4)
因为每次调用<FilesMatch "wp-login\.php|wp-admin\.php|wp-install\.php|update\.php">
Order Deny,Allow
Deny from all
Allow from XX.XX.XXX.XXX
</FilesMatch>
时,您都会使用新的requestPassportData()
创建一个新链,该链与先前的呼叫无关。
显然有多种方法可以解决此问题,但是您可以例如执行以下操作:
Observable.timer
实际实施取决于您要真正实现的目标,但希望您能明白与现在有什么不同。