この記事では、Angular4 のサブスクリプション (Subscribe) とキャンセルについて詳しく説明し、サブスクリプションとキャンセルの使用方法を詳しく紹介します。興味のある方は参考にしていただければ幸いです。
Subscribe
js を書いたことがある人なら誰でも、Subscribe がさまざまな場所で見られ、非常に重要な役割を果たすことを知っています。 http リクエストの戻りをリッスンし、ページ間でパラメータを渡します... サブスクリプションといえば Observable について触れずにはいられませんし、Observable について言えば Subscribable について触れずにはいられません... 待て、それは行き過ぎです。トピックに戻りますが、subscribe は Observable クラスの関数です。 Observable の中国語名:「観察可能」から、Observable の役割は監視に似ていることがわかりますが、その監視は多くの場合ページをまたいで行われます。例:
// 父页面 export class SupComponent { id: string; // 父组件构造器 constructor(private router: Router) { // 设置id this.id = 'JvsBRBQHU2BthZQNYrBkVl0Z22zQQIkP'; } // 进入详情页 detail(id: string) { // 携带id跳转至详细页 this.router.navigate(['sub', id]); } } // 子页面 export class SubComponent implements OnInit{ // 子组件构造器 constructor(private activated: ActivatedRoute) { } // 子组件初始化钩子 ngOnInit(): void { // 订阅活动路由 this.activated.params.subscribe(params => { console.info(params['id']); }); } }
上の説明 単純なビジネス コード: 要素をクリックします。リストページで項目を選択し、要素の詳細ページにジャンプし、詳細ページで要素の ID を取得します。現時点では、イベントのサブスクライブが便利であることがわかります。
Unsubscribe
この時、JAVAでメモリオーバーフローを起こすには、ファイルの読み書き用のストリームを閉じて、サブスクリプションを空にするのが良いのではないかと考えていました。キャンセル?公式ドキュメントには次のような文がありました:
つまり、コンポーネントのフックはサブスクリプションのキャンセルに役立ち、キャンセルする必要はありません。まあ、何を言ってもその通りです。今日 (もちろん今日はブログを書いているときです)、単純な要件に遭遇しました。ユーザーが「ユーザー情報」ページの「情報を変更」ボタンをクリックして、情報を変更するためのフォーム ページにジャンプするというものです。もちろん、フォームの初期情報はユーザーが情報を変更する前の情報ですので問題ありません。そこで、無駄なリクエストをできるだけ送信しないように(ユーザーはデータを変更せずに送信できるようにする)、前後のデータが異なる場合にそれを判定してボタンをクリックできるようにしてコードを追加しました。 :
// 修改资料页面 export class ModifyUerInfo implements OnInit, DoCheck { // 用户实体 user: User; // 表单组 form: FormGroup; // 声明订阅对象 subscript: Subscription; // 修改资料页构造器 constructor(private builder: FormBuilder) { // 实例化用户实体 this.user = new User(); // 实例化订阅对象 this.subscript = new Subscription(); } // 修改资料页初始化钩子 ngOnInit(): void { // 调用初始化表单函数 this.initForm(); } // 修改资料检测变动钩子 ngDoCheck(): void { this.subscript = this.form.valueChanges.subscribe(data => { // 若表单无改动,data为null if (data == null) { // 这里要协同html进行不可点击操作,比较简单,就不贴代码了 return; } // 让提交按钮可以点击 console.info(data); }) } // 初始化表单方法 initForm() { // 初始化表单 this.form = this.builder.group({ // 声明昵称填写项(假装这里有值) nickname: [this.user.username, Validators.required], // 声明年龄填写项(假装这里有值) age: [this.user.age, Validators.required] }) } }
OK、コードを保存します 最後に、コンソールの結果を喜んで見てみました:
各赤い線は、私が一度フォームを変更したことを表しています パターンを見つけるために写真を見てください~あなたの妹を探してください。 !
n回フォームを変更するとn+1個のログが生成され、n+1回変更されたフォーム情報であることがわかります。担当者はサブスクリプションをキャンセルする必要はないと言っていますが、これだけ多くのサブスクリプションオブジェクトがモバイル端末上で急速に生成されるのであれば、問題が発生しないのは必然であり、理想と追求を持つプログラマーとして、そのようなことは許容できません。不完全な状況。
そこで、コールバック関数に次のように追加しました:
// 取消订阅 this.subscript.unsubscribe();
この時点で、理想的な状態を復元して、これで終わりです!
正直に言うと、標準化されたコードは、コードの可読性を向上させ、ロジックを明確にし、女神に賞賛され、上司の給料を増やすことができるだけでなく...最も重要なことは、プログラムの不正使用を防止できることです。避けられるミスを防ぐためにも、注意すべき点はまだたくさんあります。
関連する推奨事項:
Angular でサブスクリプションをキャンセルするタイミングの詳細な説明
node.js パブリッシュ/サブスクライブ モードのメソッド
JavaScript パブリッシュ/サブスクライブ モードの使用方法の詳細な説明
以上がAngular4の定期購入とキャンセルについて詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

JavaScriptは、最新のブラウザにすでに組み込まれているため、インストールを必要としません。開始するには、テキストエディターとブラウザのみが必要です。 1)ブラウザ環境では、タグを介してHTMLファイルを埋め込んで実行します。 2)node.js環境では、node.jsをダウンロードしてインストールした後、コマンドラインを介してJavaScriptファイルを実行します。

Quartzタイマーを使用してタスクをスケジュールする場合、Quartzでタスク通知を事前に送信する方法、タスクの実行時間はCron式によって設定されます。今...


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

Dreamweaver Mac版
ビジュアル Web 開発ツール

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