🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
コールバック

コールバックは他のコードに引数として渡されるコードのことを指します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Q&A

解決済

3回答

982閲覧

Javascriptにおけるコールバック関数を使用する意義について

towa-y

総合スコア8

コールバック

コールバックは他のコードに引数として渡されるコードのことを指します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

0グッド

1クリップ

投稿2020/12/16 19:22

現在JavaScript(ES6)を学んでいます。
コールバック関数という概念とその用途として主に非同期処理で使われるという内容を一応ではありますが理解しました。
ただ、以前Javaを少し書いていた事があるのですが、その際はイベント取得ごとに処理のみを一塊で書いていたため、言語仕様上致し方ないことだと言うのは分かるのですが少し違和感を感じてしまいます。

そこで質問なのですが、JavaScriptで非同期処理を行おうと思った場合、コールバック関数をイベントの引数で渡す以外の方法はないのでしょうか?
JavaScriptにおけるコールバック関数を引数として渡す処理は、「使ったほうがいい」モノではなく「仕様として使わなければならない」ものなのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasima20

2020/12/16 20:23

汎用化を捨てて専用処理を量産したいなら、したいようにすればいいんじゃ?
m.ts10806

2020/12/16 20:52

何をどのように調べて何を試して現在の理解に至ったのでしょうか。 「仕様である」なら違和感とか全く関係なく、使う以外にまともに動かす術はないと思うのですが。書いたとおりにしか動かないのですから。
退会済みユーザー

退会済みユーザー

2020/12/16 23:19 編集

解答欄に移動しました。
ozwk

2020/12/16 23:39

> ただ、以前Javaを少し書いていた事があるのですが、その際はイベント取得ごとに処理のみを一塊で書いていたため 別にJavaでもその書いた処理を引数として渡してるはずですが。
babu_babu_baboo

2020/12/17 01:08

俺:「事後処理は残業になるんで、お前やっておけ!」って意味だろ。
towa-y

2020/12/17 05:48

汎用化という観点が盲点でした。 学習を進めていく中でコールバック関数の解説が登場したのですが、仕様そのものは理解できても使いどころや使う意味がまったく分からず、「コールバック関数」について調べても関数そのものについての解説ばかりで「何故これを使う必要があるんだろう」という疑問が拭えなかったため今回の質問に至りました。 私の妄言にお付き合いさせてしまい申し訳ありませんでした。
m.ts10806

2020/12/17 21:20

質問は編集できます。 指摘されたのなら不足分を追記すれば良い話です。 怒られているわけではなく、あくまで「質問内容の不備の指摘」です。
guest

回答3

0

ベストアンサー

たとえばforEachメソッドをコールバックでやることは
for構文で代替できることが多いです。
もちろんコールバックを使わなくては実現できないことも多々あります
あとは具体的にやりたいことを提示して質問いただければ
コールバックあるなしの回答は可能だと思います

投稿2020/12/17 00:15

yambejp

総合スコア116661

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

towa-y

2020/12/17 05:51

専用処理を書かなくてはならない場合、そもそも使わなければならない場合、様々あるのですね。 汎用化という観点が抜け落ちていたため、あえて使わない理由はないと気付きました。 ありがとうございます。
guest

0

async-awaitという、見かけ上はコールバックの現れない書き方も存在します。

投稿2020/12/16 23:00

maisumakun

総合スコア145967

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

towa-y

2020/12/17 05:53

知りませんでした。 調べてみます。ありがとうございます。
guest

0

コールバック関数をイベントの引数で渡す以外の方法はないのでしょうか?

あなたの言う「コールバック関数」の定義が不明ですが、イベントのリスナーという広い意味なら、イベントにリスナーをアタッチする方法はいろいろありますけど。

投稿2020/12/16 23:18

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

towa-y

2020/12/17 05:52

処理の仕方自体は様々あるのですね。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問