コールバックパラメーターを使用して無名関数の値を取得する

pi2018

コールバック関数の次のコードに出くわしました。コードは理解できましたが、頭を包むことができません。直感に反しているようです。

function greet(name,callback1){
    callback1(name)
}
greet("John Cena", function (somerandomName) {
    console.log(somerandomName);
    return someRandomName;
}); // Output is John Cena and undefined. 

これは私がコードから理解したことです:

  1. greet2つのパラメータnameをとる関数を定義しますcallback1次に、callback1のパラメーターはnameであると言います。greet関数に何も返さないのはなぜですか?

  2. そして、greet関数を呼び出すときに、2番目のパラメーターをパラメーターがsomeRandomNameである無名関数として渡します次に、console.log(someRandomName)戻り値someRandomNameを追加しましたが、この戻り値が機能せず、印刷されたステートメントの後に未定義が続きました

誰かがこれを簡単な言葉で説明してもらえますか、これはとても直感に反しているようです。

ベンジャミナドク

したがって、関数自体がパラメーターになる可能性があることを理解することが重要だと思います。

この例では、最初のパラメーターとして文字列を渡し、次にその文字列を2番目のパラメーターとしてパラメーターとして受け取る関数を渡します。

関数は必ずしも何かを返す必要はありません。多くの場合、関数はdomの操作を実行したり、データをフェッチしたり、何かを構成したり、既存の変数を変更したりする場合があります。もちろん、それが必要な場合は、何かを返すことができます。

あなたがしたようにリターンを追加することはあまり効果がありません。実際に名前の値を返すには、このように元の関数を作成する必要があります。

function greet(name,callback1){
    return callback1(name)
}

その後、あなたはこのようなことをすることができます

var wrestler = greet("John Cena", function (somerandomName) {
    console.log(somerandomName);
    return somerandomName;
});

console.log(wrestler) // prints John Cena

それは本当の目的を果たさないので、その一種の奇妙な例です。このようなものは、何が起こっているのかを確認するのに役立つかもしれません。

    function greet(name, callback) {
      callback(name)
    }

    greet('John Cena', function(name){
      console.log('Hello ' + name) // prints Hello John Cena
    })

   OR return something and use it to manipulate dom

   function greet(name, callback) {
      return callback(name)
   }

   var greeting = greet('John Cena', function(name){
     return 'Hello ' + name
   })

   document.getElementById('message').innerHTML = greeting

   // somewhere in HTML...
   <h1 id='message'></h1>

いずれにせよ、少なくとも現在、最初のパラメーターに対して何かを行っています。そして、コールバックでできることは無限です。

コールバックはjavascriptの基本的な機能です。これらは、APIやデータベースの呼び出しなど、関数の最初の部分が非同期である場合に多く機能します。この場合、最初の部分はデータベースへの呼び出しであり、最初の呼び出しから値が取得されるまでコールバックは発生しません。最近、このコールバックパターンは、Promisesのためにあまり使用されていませんが、コールバックは依然として有用です。

したがって、フロントエンドからバックエンドへの一般的なAPI呼び出しの例。これは通常、Fetch Apiを使用するか、RequestやAxiosなどのライブラリを使用して実行されます。エンドポイントを呼び出す最初の関数は、実行してデータを取得するのにある程度の時間がかかることを覚えておいてください。そのデータが返されるまで、コールバックは起動しません。もちろん、エラーまたはデータのいずれかをコールバックに送り返す関数がバックエンドにあります。私は物事を過度に複雑にしたくはありません。むしろ、コールバックがよく使用されるものについてのアイデアを与えるだけです。

function getDataFromBackend(endPoint, callback) {
  callback(error, data)
}

getDataFromBackend('/api/user', function(error, data) {
  if (error) {
    // handle error - show user error message in ui, etc
  }
   // do something with data - such as display welcome message to user, etc
})

練習のためにコールバックを使用することをお勧めします。Nodeを使用する場合、またはフロントエンドとバックエンドを使用してアプリを構築する場合、非同期通信が多数発生するため、コールバックを多く実装していることがわかりました。私があなたの質問に答えたことを望みます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

コールバック関数の外部でパラメーターの値を使用する(未定義)

分類Dev

矢印関数を使用してコールバック関数にパラメーターを渡す

分類Dev

node.jsのコールバックパラメーターとして関数の実行を同期する

分類Dev

名前付きパラメーターを使用したコールバック関数でのDartNull Safety

分類Dev

Angularjs $ interval:パスイン関数へのパラメーターとしてコールバック関数を使用する

分類Dev

内部関数値をパラメーターとしてコールバックに渡す方法

分類Dev

Kotlinでコールバックとしてパラメーターを必要とする関数を渡す

分類Dev

パラメータでコールバック関数を使用する方法は?

分類Dev

パラメータを使用してコールバック関数を割り当てる方法

分類Dev

静的コールバックパラメーターを使用してC関数を、プライベートメンバーをコールバックとして受け入れるC ++関数にラップする

分類Dev

c ++ 11関数コールバックを使用して複数のテンプレートパラメータを宣言する方法

分類Dev

C ++ Boost関数のコールバック。関数をコールバックとして呼び出し、内部にパラメーターを渡す方法は?

分類Dev

コールバックJavascriptを使用して複数の関数で複数のデータを取得する

分類Dev

コールバック関数が未定義をパラメーター値として受け取るのはなぜですか?

分類Dev

関数(c ++)の入力パラメーターとしてパラメーターパックとtypenameを使用するクラスを取得する方法

分類Dev

`typedef-ed`の無料関数ポインタを期待する関数にコールバックパラメータとしてメンバー関数を渡す方法は?

分類Dev

コールバックをパラメーターとして別の関数に渡す方法

分類Dev

Javaでパラメータとしてコールバックを取る関数を呼び出す方法

分類Dev

不明な数のパラメーターを使用してコールバックを呼び出します

分類Dev

異なるコールバック過負荷パラメーターを使用してTypeScript関数をクリーンに作成する方法

分類Dev

コールバック関数のパラメーター値

分類Dev

テンプレートパラメーターとしてラムダ/コールバック関数の複数の署名を許可する

分類Dev

ローカルパラメータを使用してグローバル関数をクリックします

分類Dev

テーブル値関数のパラメーターとしてselectクエリを使用する

分類Dev

パラメータを使用してclojureマクロで無名関数を使用する

分類Dev

PowerShell関数/スクリプトのパラメーターとしてファイル名を使用する

分類Dev

コールバック関数にパラメーターを追加する

分類Dev

関数コールバックにパラメーターを追加する方法

分類Dev

パラメータReactJSを使用したコールバック関数

Related 関連記事

  1. 1

    コールバック関数の外部でパラメーターの値を使用する(未定義)

  2. 2

    矢印関数を使用してコールバック関数にパラメーターを渡す

  3. 3

    node.jsのコールバックパラメーターとして関数の実行を同期する

  4. 4

    名前付きパラメーターを使用したコールバック関数でのDartNull Safety

  5. 5

    Angularjs $ interval:パスイン関数へのパラメーターとしてコールバック関数を使用する

  6. 6

    内部関数値をパラメーターとしてコールバックに渡す方法

  7. 7

    Kotlinでコールバックとしてパラメーターを必要とする関数を渡す

  8. 8

    パラメータでコールバック関数を使用する方法は?

  9. 9

    パラメータを使用してコールバック関数を割り当てる方法

  10. 10

    静的コールバックパラメーターを使用してC関数を、プライベートメンバーをコールバックとして受け入れるC ++関数にラップする

  11. 11

    c ++ 11関数コールバックを使用して複数のテンプレートパラメータを宣言する方法

  12. 12

    C ++ Boost関数のコールバック。関数をコールバックとして呼び出し、内部にパラメーターを渡す方法は?

  13. 13

    コールバックJavascriptを使用して複数の関数で複数のデータを取得する

  14. 14

    コールバック関数が未定義をパラメーター値として受け取るのはなぜですか?

  15. 15

    関数(c ++)の入力パラメーターとしてパラメーターパックとtypenameを使用するクラスを取得する方法

  16. 16

    `typedef-ed`の無料関数ポインタを期待する関数にコールバックパラメータとしてメンバー関数を渡す方法は?

  17. 17

    コールバックをパラメーターとして別の関数に渡す方法

  18. 18

    Javaでパラメータとしてコールバックを取る関数を呼び出す方法

  19. 19

    不明な数のパラメーターを使用してコールバックを呼び出します

  20. 20

    異なるコールバック過負荷パラメーターを使用してTypeScript関数をクリーンに作成する方法

  21. 21

    コールバック関数のパラメーター値

  22. 22

    テンプレートパラメーターとしてラムダ/コールバック関数の複数の署名を許可する

  23. 23

    ローカルパラメータを使用してグローバル関数をクリックします

  24. 24

    テーブル値関数のパラメーターとしてselectクエリを使用する

  25. 25

    パラメータを使用してclojureマクロで無名関数を使用する

  26. 26

    PowerShell関数/スクリプトのパラメーターとしてファイル名を使用する

  27. 27

    コールバック関数にパラメーターを追加する

  28. 28

    関数コールバックにパラメーターを追加する方法

  29. 29

    パラメータReactJSを使用したコールバック関数

ホットタグ

アーカイブ