使用订阅的返回值来创建可订阅的promise

时间:2018-06-05 06:45:32

标签: javascript rxjs rxjs6

所以我目前有以下代码等待输入元素完成输入然后执行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() )。但是,我仍然希望保留丢弃旧ajaxes的能力。

我应该怎么做?

也许看起来像这样:

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
    )

0 个答案:

没有答案