javascript - 我的 mapTo 语句有什么问题

标签 javascript rxjs rxjs5

尝试建立一些东西,但卡住了,错过了这里的任何错误。我想跟踪按钮点击,但从 #zip 输入中获取值,所以这就是我选择 mapTo 的原因。当我删除 mapTo 时,我可以跟踪点击并更改我在订阅函数中的语句,以使用 #zip 输入的内容更新结果 div 文本(就像我在做的那样在 mapTo) 中,这让我感到困惑,因为我认为这表明语法没问题。

   Rx.Observable.fromEvent(document.getElementById('btn'),'click')
     .mapTo($('#zip').val())
      .subscribe(function(zipCode){
         $('#result').text(zipCode);
      });

jsbin

最佳答案

如果我明白你想做什么,你正在尝试用 $('#zip') 的当前值更新 $('#result')在事件发生时。

运算符 mapTo() 将单个值作为参数。然后使用此值代替来自其来源的每个值。实际上,这意味着 .mapTo($('#zip').val()) 在您创建 Observable 链时被初始化仅一次(甚至在你订阅它)。

如果您希望它始终是实际值,您将需要一些将回调作为参数的运算符。例如只是 map():

Rx.Observable.fromEvent(document.getElementById('btn'), 'click')
  .map(function(val) {
    return $('#zip').val();
  })
  .subscribe(function(zipCode){
    $('#result').text(zipCode);
  });

您更新的演示:http://jsbin.com/qepalo/1/edit?html,js,console,output

关于javascript - 我的 mapTo 语句有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41006606/

相关文章:

angular - Http 请求的加载指示器

rxjs - 任何需要先取消订阅 RxJS()

angular - @ngrx/effects 给出 TypeError : You provided 'undefined' where a stream was expected. 您可以提供 Observable、Promise、Array 或 Iterable

javascript - 如何在 JointJs 中从 JSON 更新元素

javascript - Ember : How to get mouse event in a view that's not the target

javascript - 专用文件中的 meteor 集合

javascript - 如果你添加一个类似 facebook 的按钮,定时器每 100 毫秒触发一次

javascript - 如何将 RxJS5 运算符链接到新运算符中?

javascript - RxJS 错误处理

javascript - 结合 Rxjs 5 中的最新行为?