Callbacks は jQuery 1.7 で導入されたメソッドで、同じメソッド パラメーターを持つコールバック関数のグループを管理するために使用されます。配列などのコールバックの追加、削除、クリアに加えて、コールバックにはいくつかの特別なモードも用意されています。モードが異なると、コールバック関数のライフサイクルと実行順序が若干異なります。
コールバック列の生成 (コールバック)
var callbacks = $.Callbacks(flags);
パラメーター falgs は、コールバックのモードを示すために使用される文字列です。たとえば、「once stopOnFalse」モードでは、コールバックは最大 1 回だけ実行されます。実行中に false を返すと、コールバック列の実行も中断されます。
それでは、jQuery.Callbacks の使用シナリオはどこにあるのでしょうか?
多くの場合、一連の関数の逐次実行を制御する必要があります。この問題を処理するには、一般にキュー関数が必要です
コードを見てみましょう
function Aaron(List, callback) { setTimeout(function() { var task = List.shift(); task(); //执行函数 if (task.length > 0) { //递归分解 setTimeout(arguments.callee, 1000) } else { callback() } }, 25) } Aaron([function(){ alert('a') },function(){ alert('b') }],function(){ alert('callback') }) 分别弹出 ‘a’ , ‘b’ ,’callback’
関数パラメータのセットを渡し、それらを再帰的に解析し、それらを 1 つずつ実行するのが原則です。 setTimeoutを使うと関数を実行する前にキューの最後に追加することができます
****でもこうやって書くのは面倒ですか? *****
jQuery が提供するメソッドに切り替えましょう
var callbacks = $.Callbacks(); callbacks.add(function() { alert('a'); }) callbacks.add(function() { alert('b'); }) callbacks.fire(); //输出结果: 'a' 'b'
これははるかに便利で、コードは非常に明確なので、これは多目的コールバック関数リスト オブジェクトであり、管理に強力なメソッドを提供しますコールバック関数キュー。
いくつかの便利な処理パラメータも提供します
once: このコールバック リスト (.fire()) が 1 回だけ実行されるようにします (遅延 Deferred のように)。
memory: このリストに追加される前の値を保持します。呼び出されたコールバック (Deferred など) は、その背後にある最新の値を使用して即座に実行されます。
unique: 一度に 1 つのコールバックのみを追加できるようにします (したがって、リスト内に重複したコールバックは存在しません)。コールバックの場合は false 呼び出し
var callbacks = $.Callbacks('once'); callbacks.add(function() { alert('a'); }) callbacks.add(function() { alert('b'); }) callbacks.fire(); //输出结果: 'a' 'b' callbacks.fire(); //未执行
を中断する機能は、コールバック キューを 1 回だけ実行することです
コールバック モードデフォルト モード: コールバック列のコールバックはデフォルトで複数回実行でき、コールバック関数は繰り返し追加できます。ただし、実行中、新しく追加されたコールバックは実行されません。
once: 列内の各コールバックは最大 1 回実行できます。実行が完了すると、コールバック関数列はクリアされます。
memory: コールバックの実行プロセス中に、新しいコールバックが追加された場合、新しいコールバックも実行できます。
ユニーク: 同じコールバックを繰り返し追加することはできません。
stopOnFalse: 特定のコールバックが false を返した場合、メモリ モードであっても後続のコールバックは実行されません。
var callbacks = $.Callbacks("once memory");
コールバックの実行順序
コールバックは配列に保存され、for ループを通過するため、列内のコールバックは追加された順序で実行され、通常は最後に追加されたコールバックが最後に実行されます。
// Fire the items on the list var foo = function( value ) { console.log( "foo:" + value ); }; // Add another function to the list var bar = function( value ){ console.log( "bar:" + value ); }; var callbacks = $.Callbacks(); callbacks.add( foo ); callbacks.add( bar); callbacks.fire("hello"); // output: foo: hello // output: bar: hello
唯一の例外は、マークがメモリであり、 fire() が以前に呼び出された場合、 add() によって追加された後、前の fire のパラメータを使用して新しいコールバックがすぐに実行されます。ただし、fire() または fireWith() が使用されていない場合、add() の前に fire() によって呼び出されたコールバックはすぐには再実行されません。
その他の重要なポイントコールバック関数内でCallbacksのfire()またはfireWith()を呼び出します
コールバック内でCallbacksオブジェクトのfire()またはfireWith()メソッドが呼び出される状況があります。この場合、どうすればよいでしょうか?
Jquery はこれを行います。コールバックで fire() または fireWith() が呼び出されたとき、Callbacks オブジェクトは fire() または fireWith() のパラメーターを保存するだけで、列内のコールバックをすぐには実行しません。コールバック内のすべてのコールバックが実行された後、新しいパラメータを使用して Callbacks オブジェクト内のすべてのコールバックを再実行します。
注: マークが 1 回の場合、コールバックで fire または fireWith() を実行しても効果はありません。
function fn1( value ){ console.log( value ); if (value == "bar!") return false; callbacks.fire("bar!"); } function fn2( value ){ console.log( "fn2 says: " + value); } var callbacks =$.Callbacks("stopOnFalse"); callbacks.add( fn1 ); callbacks.add( fn2 ); // Outputs: foo! // Outputs: fn2 says:foo! // Outputs: bar! callbacks.fire("foo!" );
callbacks.disable()を呼び出した後、コールバックを有効にすることができなくなります
disable()を呼び出した後、コールバック関数リストがクリアされ、fireまたはfireWithを使用するときに応答がなくなります。したがって、コールバックはすべてクリアされており、再度有効にする必要がないため、コールバックには有効メソッドがありません。
callbacks.lock()
コールバック列はロックされており、callbacks.fire() または callbacks.fireWith() の呼び出しは無効になります。
callbacks.lock() がコールバックで呼び出される場合、注意すべきことが 1 つあります:
コールバックにはメモリ タグがあります。現在の fire() または fireWith() メソッドで実行されないコールバックは引き続き実行されます。ただし、コールバック内のコールバックは引き続き実行され、callbacks.fire() も callbacks.fireWith() も機能しなくなります。
コールバックにはメモリ タグがありません。すべてのコールバックがクリアされます。これは、後続のコールバックが実行されなくなることを意味します。
奇妙なことに、コールバックはロック解除メソッドを提供していないということです。つまり、一度ロックされると、コールバックは fire() または fireWith() を呼び出す機能を永久に失います。
以上がjQuery でコールバックを使用する意味は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナント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はサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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