2016-07-01 5 views
-1

でコールバックを与える:Nodejsは、私はそのような何かをしたい、コールバック関数で

callbackfunc=function(client, id, callback){ 
    callbackfunc2({'id': id}, myfunc); 
} 

var myfunc = function(err,result){ 
    callback(new Error("Ein Fehler")); 
} 


callbackfunc(client, 38373,function(err, data){ 
      console.log("Here:"+data+" Error:"+err); 
}); 

私はmyfunc関数でコールバックを使用可能にするにはどうすればよいですか?私はいつもコールバックは関数ではありません。もし私がそれを自分のやり方で書いたら、それはうまくいく。そして、私は特別な機能を持っていたときになぜ機能しないのか分かりません。

callbackfunc=function(client, id, callback){ 
    callbackfunc2({'id': id}, function(err,result){ 
    callback(new Error("Ein Fehler")); 
}); 

callbackfunc(client, 38373,function(err, data){ 
      console.log("Here:"+data+" Error:"+err); 
}); 

答えて

1

あなたは別の関数でcallbackが利用可能にしたい場合は、どちらかに持っている:

  1. は、引数としてmyfuncにそれを渡します。

又は

  • callbackが利用可能になったスコープ内myfuncを宣言する。
  • それは、この例では動作します:

    callbackfunc=function(client, id, callback){ 
        callbackfunc2({'id': id}, function(err,result){ 
        callback(new Error("Ein Fehler")); 
    }); 
    

    あなたはそれが定義されている範囲内からcallbackを呼び出しているので。関数の引数は、それらが定義されている関数のブロック内でのみ使用可能であることを覚えておいてください。引数として他のスコープに渡したり、別のスコープで使用可能な他の変数に代入しない限り、その関数の外部では使用できません。

    +0

    こんにちは! ありがとうございます。私はこの権利を理解しました。最初の例では、myfuncにコールバックを渡すことはできません。好ましい方法は、うまく動作する2番目の方法です。 – baeckerman83

    +0

    @ baeckerman83 - コールバックを 'myfunc'に渡すことはできますが、最初のコードブロックで' callbackfunc2'となる 'myfunc'を呼び出す関数を編集する必要があります。したがって、 'callback'を' myfunc'と一緒に 'callbackfunc2'に渡すと、その関数が' myfunc'を呼び出すと 'callback'を引数として渡すことができます。 – jfriend00

    関連する問題