【问题标题】:Observable.fromEvent is not a function - RxJSObservable.fromEvent 不是一个函数 - RxJS
【发布时间】:2021-11-01 21:37:19
【问题描述】:

我想在没有 Angular 或 Webpack 的情况下使用 RxJS。我刚刚包含了来自 CDN 的 RxJS 7。这是我尝试过的:

const { Observable } = rxjs;

const clicks = Observable.fromEvent(document, 'click');

clicks.subscribe(ev => console.log(ev))

我收到此错误:

Uncaught TypeError: Observable.fromEvent is not a function

我的 html 代码如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/7.3.0/rxjs.umd.js" integrity="sha512-1Jz97rlEAHdMk6x3UWesQaEOhSZ3iG82PkqNr3N4bj/hqKaVQDPTeHW0//vU1ucY+pB5sZr5uNz1aO2qO5XkMg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <script src="demo.js"></script>
</head>
<body>
    demo
</body>
</html>

有一个similar question,但不一样,因为它使用 Angular,但我不使用任何构建系统,只是从 CDN 中包含它。

我做错了什么?如何使用Observable.fromEvent

【问题讨论】:

    标签: javascript rxjs


    【解决方案1】:

    RxJS@6开始,fromEvent函数不是Observable类的一部分,而是需要直接从rxjs使用。

    尝试以下方法:

    const { Observable, fromEvent } = rxjs;
    
    const clicks = fromEvent(document, 'click');
    
    clicks.subscribe(ev => console.log(ev));
    

    【讨论】:

      【解决方案2】:

      导入fromEvent 并直接使用它,而不是导入Observable

      import { fromEvent } from 'rxjs';

      编辑:我很抱歉,因为我忘记了你在浏览器端。使用 CDN 会声明全局变量rxjs,所以你应该使用rxjs.fromEvent

      【讨论】:

      • 我在纯 html+js 中使用它。没有导入语句:Uncaught SyntaxError: Cannot use import statement outside a module
      猜你喜欢
      • 2016-03-27
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      • 2023-03-26
      • 2017-02-27
      相关资源
      最近更新 更多