繁体   English   中英

RxJS超时不起作用

[英]RxJS timeout is not working

我正在尝试花费超过3秒的时间退出Observable流。 问题是,当我复制并粘贴相同的值几次时, distinctUntilChanged运算符不会让输入流通过。 因此,如果没有字符串流通过,我想超时。 这就是我所拥有的。

        import { Subject } from "rxjs/Subject";
        import "rxjs/add/operator/filter";
        import "rxjs/add/operator/debounceTime";
        import "rxjs/add/operator/distinctUntilChanged";
        import "rxjs/add/operator/switchMap";
        import "rxjs/add/operator/timeout";

        this._searchSubject
        .filter(val => val.length > 0)
        .debounceTime(500)
        .distinctUntilChanged()
        .timeout(3000)
        .switchMap(userSearchInput => {
            ...api call that returns Promise
        })
        .subscribe(searchResults => {
            ...do stuff with the result
        });

超时引发TimeoutError ,您是否正在处理此错误?

Rx.Observable.from(new Promise(resolve => setTimeout(resolve, 1000)))
  .timeout(500)
  .subscribe(console.log, ({ message }) => console.error(message));

另外,您可以使用timeoutWithRx.Observable.empty()结束流:

Rx.Observable.from(new Promise(resolve => setTimeout(resolve, 1000)))
  .timeoutWith(500, Rx.Observable.empty())
  .subscribe(null, null, () => console.log('done'));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM