RxJ,不在dom中显示,但控制台可以工作

时间:2019-02-21 08:19:49

标签: rxjs observable reactive-programming observer-pattern reactive

为什么输出仅显示在元素之一中 (#skip-result或#distinct-result)不是全部吗?

但是如果我尝试从这两个可观察的输出结果 在下面进行操作即可

您可以检查代码here

var input$ = Rx.Observable.fromEvent(input,'input')


var x$ = input$
  .debounce(1000)



// skip two character in string, from input value
// then, display it in #skip-result
x$
  .map(v=> v.target.value)
  .filter(v=> v.length > 2)
  .flatMap(v=> 
           Rx
             .Observable
             .from(v)
             .skip(2)
             .reduce((x,y)=> x + y)
  )
  .subscribe(s=>{
    $('#skip-result').text('Skip Value is ' + s)
  })



// search distinct in string, from input value
// then, display it in #distinct-result
x$
  .map(e=> e.target.value)
  .filter(e=> e.length > 0)
  .flatMap(v=> 
           Rx
             .Observable
             .from(v)
             .distinct()
             .reduce((x,y)=> x + y)
  )
  .subscribe(x=>{
    $('#distinct-result').text('Distinct value is ' +x)
  })

1 个答案:

答案 0 :(得分:0)

在您引用的JSBin中,您尚未导入jQuery,但是您似乎正在使用jQuery选择器来设置 10345872 96625115 96699612 10305012 10202214 10609010 10299680 96688192 10302010 #skip-result DOM元素的内容。这将引发错误。

如果改为将它们更改为设置#distinct-result属性(一个订阅已经开始执行该属性),则应该获得预期的行为。

innerHTML

编辑

再次查看后,您的标记未正确关闭。具体来说,.subscribe(s => { skipResult.innerHTML = 'Skip Value is ' + s }) 被设为#skip-result的子代。