2016-08-16 24 views
0

私はJavaScriptのコールバックが解決しようとしている問題を理解しようとしています。私はこれまで何を読んでから、私たちはイベントがあり、これらのイベントは、パラメータ(コールバック関数)としての機能を受け入れることJavaScriptコールバックが解決しようとしている問題は何ですか?

reference here

var img1 = document.querySelector('.img-1'); 

img1.addEventListener('load', function() { 
    // woo yey image loaded 
}); 

img1.addEventListener('error', function() { 
    // argh everything's broken 
}); 

だから私の推測では、我々は問題をしようとしているということですイベントが発生した後でもっと多くのことをやりたいのですか?例えば

私は郵便番号によって店舗を検索するボタンで入力されたテキストが含まれているシステム、および私のジオロケーションを使用して店舗を検索し、単一のボタンを持っている想像してみてください。ボタンをクリックして "12345"の入力を持つ店を検索した場合、ジオロケーションをクリアする別の関数を "コールバック"することも期待します。私はそれが私の結果に干渉することを望んでいないからです。

それは意味がありますか?

+3

いいえ、あなたの質問は理にかなっていません。 JavaScriptや一般的なイベントについてのチュートリアルを読む方がよいでしょう。 – Amit

+0

コールバックは、システムの他の部分に命令を渡す一般的な方法を提供します。 –

+0

あなたの主要な質問に答える非同期性。この例では、コールバックは、さまざまな状況で何をすべきかを要素に伝える単なるパラメータです。 – Nate

答えて

1

コールバックは、コードを非同期に実行する必要がある場合に最もよく使用されます。同期は「順番に」を意味するため、非同期は順序どおりではありません。非同期の性質は、その順序が予測できないことです。これは、フロントエンド開発の2つの主要な側面であるAJAXのリクエストとイベントの場合です。サーバーが応答するにはどれくらいの時間がかかるかわかりません。ユーザーがボタンをクリックして他のイベントを表示するタイミングを知ることはできません。したがって、コールバックを使用して、「この非同期操作が完了したら、Xを実行します」とします.Xはコールバック関数のコードです。

+0

興味深い。あなたの説明をありがとう。私がこのテーマについてもっと読んでいるように、これはもっと理にかなっています。約束のような(響きのような)リード。 – Diego

0

JavaScriptコールバックが解決しようとしている問題は何ですか?

これは合理的かつ回答可能な質問です。説明がちょっと混乱していて、それがあなたが探しているものであるかどうかはわかりませんが、私は最初の質問に答えます。

Javascriptはマルチスレッド言語ではありません。ブラウザ内では、Javascriptコードの実行が終了するまでページがロックされ、コードが完了するまでNodeJSアプリケーションは他のリクエストを処理したり、他のロジックを実行することができなくなります。

コールバックがこれの回避策です。これにより、開発者は、AJAX要求が完了するか、(ノードで)データを返すデータベースクエリを実行するなど、特定のイベントで実行するコードを指定できます。コールバックがなければ、ページ/アプリケーションはリクエストが受信されるまでロックし、AJAXのA(非対称)を破ります。

さらに読書:他人として

http://javascriptissexy.com/understand-javascript-callback-functions-and-use-them/

+0

このリンクをありがとう、私はこの質問を投稿した直後の昨夜、それに着陸した。 =) – Diego

0

は、これは非同期呼び出しで使用されている、指摘しています。私はそれを簡単かつ簡単に説明しようとします。 Ajaxを使用してデータを保存する呼び出しを行っているとします。実際の保存には時間がかかることがあります(1秒とします)が、呼び出しが行われた直後に制御の流れが次のステートメントに移動します。つまり、コードはメソッド呼び出しからの応答を待っていません。 (それは非同期であるからです)。 ただし、レコードが正常に保存されたか、操作が失敗したかを示すメッセージをユーザーに表示することができます。このシナリオでは、コールバックメソッドを使用して、Ajax呼び出しの戻り値を確認する必要があります。 コールバックメソッドがいつ発生するかは予測できませんが、発生するとコールバック内のコードが実行され、ロジックを追加してユーザーに適切なメッセージを表示できます。

+0

あなたの言葉でこのことが私にどのように作用するか説明してくれてありがとう。 – Diego

+0

あなたは大歓迎です。 – Sparrow

関連する問題