現在、たくさんの興味深いことが起こっています。
RxJS 7 は素晴らしいです。RxJS 8 はアルファ版で、使えるようです。Chrome Today で利用できる新しい Native Observable も同様です。
一緒に使用できますか?
短い答えですが、ノーのようなものです。技術的には、それらはすべて Observable なので、同じ言語を話すはずですよね? .subscribe、.next、.error、.complete、そして出来上がりです...
そうですね、もうすぐです。ただし、RxJS は「安価なインポート」ではなく、真の Obsevable を確実に処理するために追加の努力を行っています。
したがって、Symbol.observable または @@observable が存在するかどうかを注意深くチェックするため、技術的には Observable.prototype['@@observable'] = function(){ return this } を実行することで、DOM Observable にそれらをモンキーパッチすることができますが、 ...成功し、document.when('click').subscribe(new Subject()) を介して両方を接続できたとしても、RxJS ストリームが参照を作成するため、再び失敗します。内部的には自分自身の this に設定されますが、これは別の場所を指すことになるため、壊れます。
ご苦労様です。Native Observable をサブスクライブし、データを RxJS ランドに転送するカスタム ブリッジが必要です。
なるほど、それを実行したとしましょう、確かにうまくいくでしょう。この愚かなラップ関数が完了していれば、突然次のようなことができるようになります:
const clickCount = rx( wrap(document.when('click')), scan(x=>x+1, 0), ); clickCount.subscribe(doSomething);
とにかく、上記はすでにある種のニュースとして認定されている可能性がありますが、本当に興味深い部分はまだまったくありません!
興味深い部分
ここで興味深いのは、現実の世界、実際のアプリケーション (通常は Web フレームワークまたは小規模な UI ライブラリ内) での Observable の使用について話すときです。
JavaScript「コンポーネント」内で Observable を使用して、クリックカウンター ボタンのケースを考えてみましょう。
import { Subject, scan } from 'rxjs'; import { rml } from 'rimmel'; const Component = () => { const counter = new BehaviorSubject(0).pipe( scan(x=>x+1) ); return rml` <button onclick="${counter}">hit me</button> Count: <span>${counter}</span> `; }
Native DOM Observable には、いくつかの興味深い問題があります。 Subject は存在せず、BehaviorSubject も存在しません。
それに加えて、演算子を渡すための .pipe() メソッドさえありません。
最後に、ネイティブ演算子はすべて Observable クラスのメソッドであり、関数ではありません。
それで、大きな問題は、まだ存在しないオブジェクトのメソッドをどのように呼び出すかということです。
(おそらくこの時点で道に迷っているでしょう...わかっています、お待ちください)
Observable を作成する新しい方法は、element.when(eventName) のようになります。これは DOM へのネイティブ呼び出しです。
ただし、今はテンプレート内にあり、JavaScript コンポーネント内にいます。まだ HTML が DOM に追加されていないため、.when() の呼び出しが行われた可能性はありません。
そして、それに対して .map().inspect().filter() を呼び出したいと思います!
見落とし? RxJS は数年前まで同じインターフェイスを使用していました (Bacon や Zen Observables などはまだ使用しています)。しかし、ツリーシェイキングを支援するために、すべての 演算子メソッド を 演算子関数 なので、必要なものだけをインポートできるようになり、アプリが軽量になります。素晴らしいです!
展望台それでは、新しい状況に戻りますが、コンポーネント内からそれを解決するにはどうすればよいでしょうか?
確かに、まあ、それは簡単です!私たちは、WICG の提案で Subject と BehaviorSubject を取得するか (ネタバレ: 今のところは取得しません)、あるいは... 創造力を発揮してシステムをハッキングし、
ふりをする を助けるプロキシのようなものを考え出すかのどちらかです。ネイティブ DOM Observable は存在しない場合でも存在するため、そのネイティブ オペレーター メソッドを呼び出すことができます。 ?
観測可能な未来 = 観測。
Observaturusはラテン語で「観察する者」という意味なので、それを無理やり英語にするとこんな感じになるはずです。
それでは、コードではどのように見えるでしょうか?
const clickCount = rx( wrap(document.when('click')), scan(x=>x+1, 0), ); clickCount.subscribe(doSomething);そうだ、見てください!ここに何かがあります: new Observature(0).scan(x=>x 1).
これについて説明しましょう。
技術的には、新しい BehaviorSubject(0).scan(x=>x 1) を作成するのと似ていますが、1 つの点が異なります。それは、BehaviorSubject がもう存在しないということです。 ?
Observature は単なる代理です。これは、後のサブスクリプションと後のバインディングのために、Observable と Observer のメソッドを公開します!
.scan(fn) を呼び出すと、必要なときにサブスクライブされる実際の Observable に対して .scan を呼び出すことを記憶します。
1 つ目は、これらが実際のサブジェクトではないという事実です。そのため、上記のコードを実行すると、指定した演算子関数はスタックのレベル 1/2 で実行されます。クリックからシンクまで、これまでに見たものよりも軽くて速いかもしれません。いいえ、まだベンチマークを実行していませんし、気にしていません。今のところ重要なのはコンセプトです。
他のユースケースでは 100% ネイティブを維持するには、.map() と .filter() を使用するだけで済みますが、私の経験では、scan() なしでは適切な生活を送ることはできません。
RxJS8
わかりました、それで...上記は RxJS ではなくネイティブのものを使用していました。
RxJS8 ではどのようになりますか?
私の答えは、「わかりません。@benlesh に聞いてください。彼はあなたの男です :)
」です。
import { Subject, scan } from 'rxjs'; import { rml } from 'rimmel'; const Component = () => { const counter = new BehaviorSubject(0).pipe( scan(x=>x+1) ); return rml` <button onclick="${counter}">hit me</button> Count: <span>${counter}</span> `; }どう思いますか?このようなものを使用しますか?
今のところ、この Stackblitz で DOM Observables、Observatures を使用して遊ぶことができます
メッセージをドロップして感想を残してください。
以上がネイティブ Observable、まだ存在しない Observable を RxRxnd しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか

node.jsは、主にストリームのおかげで、効率的なI/Oで優れています。 ストリームはデータを段階的に処理し、メモリの過負荷を回避します。大きなファイル、ネットワークタスク、リアルタイムアプリケーションの場合。ストリームとTypeScriptのタイプの安全性を組み合わせることで、パワーが作成されます

PythonとJavaScriptのパフォーマンスと効率の違いは、主に以下に反映されています。1)解釈された言語として、Pythonはゆっくりと実行されますが、開発効率が高く、迅速なプロトタイプ開発に適しています。 2)JavaScriptはブラウザ内の単一のスレッドに限定されていますが、マルチスレッドおよび非同期I/Oを使用してnode.jsのパフォーマンスを改善でき、両方とも実際のプロジェクトで利点があります。

JavaScriptは1995年に発信され、Brandon Ikeによって作成され、言語をCに実現しました。 2。JavaScriptのメモリ管理とパフォーマンスの最適化は、C言語に依存しています。 3. C言語のクロスプラットフォーム機能は、さまざまなオペレーティングシステムでJavaScriptを効率的に実行するのに役立ちます。

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。

PythonとJavaScriptの将来の傾向には、1。Pythonが科学コンピューティングの分野での位置を統合し、AI、2。JavaScriptはWebテクノロジーの開発を促進します。どちらもそれぞれのフィールドでアプリケーションシナリオを拡大し続け、パフォーマンスをより多くのブレークスルーを行います。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。
