Rxjs Rx.js可观察订阅-按钮单击未捕获

Rxjs Rx.js可观察订阅-按钮单击未捕获,rxjs,observable,Rxjs,Observable,我正在使用Rx.js observable subscribe尝试一个非常基本的示例。这是我的密码: HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"></meter> <title></title> </head> <body> <script type="text/javascript" src="

我正在使用Rx.js observable subscribe尝试一个非常基本的示例。这是我的密码:

HTML

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"></meter>
    <title></title>
</head>
<body>
<script type="text/javascript"  src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.4.0/Rx.js"></script>
<script  src="https://code.jquery.com/jquery-3.4.0.min.js" integrity="sha256-BJeo0qm959uMBGb65z40ejJYGSgR7REI4+CW1fNKwOg=" crossorigin="anonymous"></script>
<script src="index.js"></script>

<button id='testButton'>Click</button>

</body>
</html>

但是当我点击按钮时,控制台里什么都没有。我遗漏了什么吗?

fromEvent
要求第一个参数是DOM元素
$
可能是指返回jQuery对象的
jQuery

因此,您应该先从
按钮
中提取本机元素,然后再将其传递给
fromEvent

var button = $('#testButton');
var btn$ = Rx.Observable.fromEvent(button[0], 'click'); // or .get(0) instead of [0]

实时演示:

我将我的JS代码包装到jquery“$(document).ready()”处理程序中,它开始工作:

$( document ).ready(function() {    
    var button = $('#testButton');

    var btn$ = Rx.Observable.fromEvent(button, 'click');

    btn$.subscribe(function(e){
        console.log(e);
    });
});

我尝试了这个,在浏览器刷新后得到了错误:Rx.js:3642 Uncaught TypeError:Function.FromEventObservable.setupSubscription(Rx.js:3642)在FromEventObservable.Observable.订阅(Rx.js:3664)在FromEventObservable.Observable.订阅(Rx.js:881)时尝试订阅(Rx.js:893)在index.js:35中,它确实适用于me:Ye,在您的沙盒中,它甚至可以在没有按钮“[0]”的情况下工作。看起来这取决于脚本的加载方式——我只是在浏览器中测试一下。
$( document ).ready(function() {    
    var button = $('#testButton');

    var btn$ = Rx.Observable.fromEvent(button, 'click');

    btn$.subscribe(function(e){
        console.log(e);
    });
});