javascript - RxJS distinctUntilChanged 多次发出相同的值

标签 javascript rxjs

你们能告诉我这里出了什么问题吗?

RxJS

Jsfiddle Demo

我原以为该值只会打印一次,但它打印了多次

JsFiddle

function Search(sel) {
    let observable = Rx.Observable.fromEvent(document.getElementById('iCard'), 'input');
    observable
      .debounceTime(1000)
      .distinctUntilChanged()
      .subscribe({
        next: this.callGlobalSearch
      });
  }

  function callGlobalSearch(e){
    console.log('VALUE : ', e.target.value); // NOT SURE, WHY THE VALUE IS PRINTED MULTIPLE TIMES
  }

最佳答案

在 fiddle check here 中更改了您的代码.您不需要在每个 keyup 上订阅 input 事件。 distinctUntilChanged 正在获取始终不同的事件对象。所以它什么也做不了。在那个事件应该被映射到文本之前,然后它可以在 distinctUntilChanged 中进行比较。

Rx.Observable.fromEvent(document.getElementById('iCard'), 'input')
  .debounceTime(1000)
  .map(e => e.target.value)
  .distinctUntilChanged()
  .subscribe({
    next: callGlobalSearch
  });

function callGlobalSearch(text) {
  console.log('VALUE : ', text);
}

关于javascript - RxJS distinctUntilChanged 多次发出相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51438410/

相关文章:

javascript - Observable - 监听 EventEmitter 并发出初始值

angular - WebSocketSubject 不工作

javascript - 具有单个元素的 grunt.file.readJSON

javascript - 将图像从 SQL Server 插入到 Word 文档文件

javascript - Joi 验证多个条件

javascript - 在新窗口中打开选项卡,然后

JavaScript insideHTML 锁定其他 JavaScript

angular - 我怎样才能返回一个带有回调值的可观察对象?

angular - 如何在 Angular 和 Rxjs 中只调用一次 ajax?

angular - combineLatest 抛出 TS2349 6 或更多流