検索
ホームページウェブフロントエンドフロントエンドQ&AJavaScriptのコールバック関数とは何ですか?

JavaScriptのコールバック関数とは何ですか?

Jun 29, 2021 pm 05:58 PM
javascript折り返し電話

JavaScript では、コールバック関数はパラメーターとして渡される関数です。関数 A がパラメータ (関数参照) として別の関数 B に渡され、この関数 B が関数 A を実行します。関数 A はコールバック関数と呼ばれ、名前 (関数式) がない場合は匿名コールバック関数と呼ばれます。

JavaScriptのコールバック関数とは何ですか?

このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

コールバック関数 (Callback) とは

#JavaScript では、関数はオブジェクトです。したがって、関数は関数をパラメーターとして受け取ることができ、他の関数によって関数を返すことができます。これを行う関数は高階関数と呼ばれます。パラメータとして渡される関数はコールバック関数と呼ばれます。

コールバック関数の具体的な定義は次のとおりです。関数 A がパラメータ (関数参照) として別の関数 B に渡され、この関数 B が関数 A を実行します。関数 A をコールバック関数と呼ぶとしましょう。名前(関数式)がない場合は、匿名コールバック関数と呼ばれます。

なぜコールバックが必要なのでしょうか?

非常に重要な理由が 1 つあります - JavaScript はイベント駆動型言語です。これは、JavaScript が応答を待ち続けるのではなく、他のイベントをリッスンしながら実行を続けることを意味します。基本的な例を見てみましょう:

function first(){
  console.log(1);
}
function second(){
  console.log(2);
}
first();
second();

ご想像のとおり、関数が最初に実行され、次に 2 番目の関数が実行され、次の内容がコンソールに記録されます:

// 1
// 2

これまでのところ、すべてが非常にうまく機能しています。 。

しかし、関数にすぐに実行できないコードが含まれている場合はどうなるでしょうか?たとえば、最初にリクエストを送信してからレスポンスを待つ必要がある API リクエストはどうでしょうか?このアクションをシミュレートするには、setTimeout が使用されます。これは、設定された時間の後に呼び出される JavaScript 関数です。 API リクエストをシミュレートするために、関数を 500 ミリ秒遅延させます。新しいコードは次のようになります:

function first(){
  // Simulate a code delay
  setTimeout( function(){
    console.log(1);
  }, 500 );
}
function second(){
  console.log(2);
}
first();
second();

現在、setTimeout() がどのように機能するかを理解することは重要ではありません。重要なのは、console.log(1) を 500 ミリ秒の遅延以内に移動したことがわかります。では、関数を呼び出すとどうなるでしょうか?

first();
second();
// 2
// 1

最初に first() 関数を呼び出したにもかかわらず、その結果は Second() 関数の後に出力されました。

JavaScript が必要な順序で関数を実行していないのではなく、JavaScript が Second() に進む前に first() からの応答を待っていないのです。

では、なぜこれを見せているのでしょうか?関数を次々に呼び出して、それらが正しい順序で実行されることを期待することはできないからです。コールバックは、他のコードの実行が終了するまで特定のコードが実行されないようにする方法です。

コールバック関数の作成

それでは、早速、コールバックを作成してみましょう。

まず、Chrome 開発者コンソール (Windows: Ctrl Shift J) (Mac: Cmd Option J) を開き、コンソールに次の関数宣言を入力します。

function doHomework(subject) {
  alert(`Starting my ${subject} homework.`);
}

次に、コールバックを追加しましょう - do宿題()関数の最後のパラメータとして、コールバックを渡すことができます。次に、 do宿題() の呼び出しの 2 番目のパラメーターでコールバック関数を定義します。

function doHomework(subject, callback) {
  alert(`Starting my ${subject} homework.`);
  callback();
}

doHomework('math', function() {
  alert('Finished my homework');
});

ご覧のとおり、コンソールに上記のコードを入力すると、「宿題の開始」アラートと「宿題の終了」アラートの 2 つのアラートが表示されます。

ただし、関数呼び出しでコールバック関数を定義する必要は必ずしもありません。これらはコード内の別の場所で次のように定義できます。

function doHomework(subject, callback) {
  alert(`Starting my ${subject} homework.`);
  callback();
}
function alertFinished(){
  alert('Finished my homework');
}
doHomework('math', alertFinished);

この例の結果は前の例とまったく同じですが、設定が若干異なります。 do宿題() 関数呼び出し中に、alertFinished 関数定義をパラメーターとして渡していることがわかります。

#実際の例

Twitter の API を呼び出してみます。 API にリクエストを送信した場合、その応答に基づいて操作を行う前に、応答を待つ必要があります。これは真のコールバックの良い例です。リクエストは次のようになります。

T.get('search/tweets', params, function(err, data, response) {
  if(!err){
    // This is where the magic will happen
  } else {
    console.log(err);
  }
})

T.get は、get リクエストを Twitter に送信していることを意味します

このリクエストには 3 つのパラメータが含まれています: "search/tweets" (これはルートです) request )、params (検索パラメータ)、および匿名関数 (コールバック) です。

コードの実行を続行するにはサーバーの応答を待つ必要があるため、ここではコールバックが重要です。 API リクエストが成功するかどうかはわかりません。そのため、get リクエストを介して検索/ツイートのパラメータを送信した後、待機します。 Twitter が応答すると、コールバック関数が呼び出されます。 Twitter はエラー (エラー) オブジェクトまたは応答オブジェクトを送信します。コールバック関数内で、if() ステートメントを使用してリクエストが成功したかどうかを判断し、それに応じて新しいデータに基づいて動作することができます。

[関連する推奨事項:

JavaScript 学習チュートリアル

]

以上がJavaScriptのコールバック関数とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Reactの利点:パフォーマンス、再利用性などReactの利点:パフォーマンス、再利用性などApr 15, 2025 am 12:05 AM

Reactの人気には、パフォーマンスの最適化、コンポーネントの再利用、豊富なエコシステムが含まれます。 1.パフォーマンスの最適化は、仮想DOMおよび拡散メカニズムを介して効率的な更新を実現します。 2。コンポーネントの再利用は、再利用可能なコンポーネントによって重複コードを削減します。 3.リッチなエコシステムと一方向のデータフローは、開発エクスペリエンスを向上させます。

反応:動的でインタラクティブなユーザーインターフェイスを作成します反応:動的でインタラクティブなユーザーインターフェイスを作成しますApr 14, 2025 am 12:08 AM

Reactは、動的でインタラクティブなユーザーインターフェイスを構築するための選択ツールです。 1)コンポーネント化とJSXは、UIを分割して簡単に再利用します。 2)国家管理は、UIの更新をトリガーするためにUseStateフックを通じて実装されます。 3)イベント処理メカニズムは、ユーザーの相互作用に応答し、ユーザーエクスペリエンスを向上させます。

React vs.バックエンドフレームワーク:比較React vs.バックエンドフレームワーク:比較Apr 13, 2025 am 12:06 AM

Reactは、ユーザーインターフェイスを構築するためのフロントエンドフレームワークです。バックエンドフレームワークは、サーバー側のアプリケーションを構築するために使用されます。 Reactはコンポーネントで効率的なUIアップデートを提供し、バックエンドフレームワークは完全なバックエンドサービスソリューションを提供します。テクノロジースタックを選択するときは、プロジェクトの要件、チームのスキル、およびスケーラビリティを考慮する必要があります。

HTMLとReact:マークアップとコンポーネントの関係HTMLとReact:マークアップとコンポーネントの関係Apr 12, 2025 am 12:03 AM

HTMLとReactの関係は、フロントエンド開発の中核であり、最新のWebアプリケーションのユーザーインターフェイスを共同で構築します。 1)HTMLはコンテンツ構造とセマンティクスを定義し、Reactはコンポーネントを介して動的インターフェイスを構築します。 2)ReactコンポーネントはJSX構文を使用してHTMLを埋め込み、インテリジェントなレンダリングを実現します。 3)コンポーネントライフサイクルは、状態および属性に従ってHTMLレンダリングと動的に更新を管理します。 4)コンポーネントを使用して、HTML構造を最適化し、保守性を向上させます。 5)パフォーマンスの最適化には、不必要なレンダリングの回避、重要な属性の使用、およびコンポーネントの単一の責任を維持することが含まれます。

ReactとFrontend:インタラクティブエクスペリエンスの構築ReactとFrontend:インタラクティブエクスペリエンスの構築Apr 11, 2025 am 12:02 AM

Reactは、インタラクティブなフロントエンドエクスペリエンスを構築するための好ましいツールです。 1)Reactは、コンポーネント化と仮想DOMを通じてUIの開発を簡素化します。 2)コンポーネントは、関数コンポーネントとクラスコンポーネントに分割されます。関数コンポーネントはよりシンプルで、クラスコンポーネントはより多くのライフサイクル方法を提供します。 3)Reactの作業原則は、パフォーマンスを改善するために仮想DOMおよび調整アルゴリズムに依存しています。 4)国家管理は、usestateまたはthis.stateを使用し、ComponentDidmountなどのライフサイクルメソッドが特定のロジックに使用されます。 5)基本的な使用には、コンポーネントの作成と状態の管理が含まれ、高度な使用にはカスタムフックとパフォーマンスの最適化が含まれます。 6)一般的なエラーには、不適切なステータスの更新とパフォーマンスの問題が含まれます。

反応とフロントエンドスタック:ツールとテクノロジー反応とフロントエンドスタック:ツールとテクノロジーApr 10, 2025 am 09:34 AM

Reactは、コアコンポーネントと状態管理を備えたユーザーインターフェイスを構築するためのJavaScriptライブラリです。 1)コンポーネントと州の管理を通じてUIの開発を簡素化します。 2)作業原則には和解とレンダリングが含まれ、React.memoとusememoを通じて最適化を実装できます。 3)基本的な使用法は、コンポーネントを作成およびレンダリングすることであり、高度な使用法にはフックとコンテキストアピの使用が含まれます。 4)不適切なステータスの更新などの一般的なエラーでは、ReactDevtoolsを使用してデバッグできます。 5)パフォーマンスの最適化には、React.MEMO、仮想化リスト、コードスプリッティの使用が含まれ、コードを読みやすく保守可能に保つことがベストプラクティスです。

HTMLにおけるReactの役割:ユーザーエクスペリエンスの向上HTMLにおけるReactの役割:ユーザーエクスペリエンスの向上Apr 09, 2025 am 12:11 AM

ReactはJSXとHTMLを組み合わせてユーザーエクスペリエンスを向上させます。 1)JSXはHTMLを埋め込み、開発をより直感的にします。 2)仮想DOMメカニズムは、パフォーマンスを最適化し、DOM操作を削減します。 3)保守性を向上させるコンポーネントベースの管理UI。 4)国家管理とイベント処理は、インタラクティブ性を高めます。

反応コンポーネント:HTMLで再利用可能な要素を作成します反応コンポーネント:HTMLで再利用可能な要素を作成しますApr 08, 2025 pm 05:53 PM

Reactコンポーネントは、機能またはクラスによって定義され、UIロジックのカプセル化、およびプロップを介して入力データを受け入れることができます。 1)コンポーネントの定義:関数またはクラスを使用して、反応要素を返します。 2)レンダリングコンポーネント:Reactコールレンダリングメソッドまたは機能コンポーネントを実行します。 3)マルチプレックスコンポーネント:データをプロップに渡して、複雑なUIを構築します。コンポーネントのライフサイクルアプローチにより、ロジックをさまざまな段階で実行でき、開発効率とコードメンテナビリティが向上します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

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