0

所以我目前有以下代码等待输入元素完成输入,然后执行 ajax。

input = 输入元素 例如<input>
axiosAjax = 只是我的 ajax

fromEvent(input, "keyup")
    .pipe(
        map(i => i.currentTarget.value),
        debounceTime(delay),
        distinctUntilChanged(),
        switchMap(value => 
        {
            this.page = 1
            return this.axiosAjax({
                path,
                method,
                data: {
                    ...data,
                    [term]: value
                }
            })
        })
    )

我正在尝试将 ajax 移出 switchMap,以便我可以在此函数之外调用 ajax。例如.subscribe( () => this.aDifferentAjax() )。但是,我仍然想保持丢弃旧 ajax 的能力。

我该怎么办?

也许看起来像这样:

fromEvent(input, "keyup")
    .pipe(
        map(i => i.currentTarget.value),
        debounceTime(delay),
        distinctUntilChanged(),
        switchMap(value => 
        {
            this.page = 1
            return value
        })
    )
    .subscribe(
        () => this.aDifferentAjax()
        // ^This ajax can be discarded if new input is detected
    )
4

0 回答 0