最近、私はExpressを見ていますが、コールバック関数をパラメーターとして使用して、どこでも見てきました。この概念を理解できない場合、nodejsとexpressのコードは非常に混乱します。例えば:
コードコピーは次のとおりです。
app.use(function(req、res、next){
var err = new Error( 'not found');
err.Status = 404;
next(err);
});
アプリはオブジェクトであり、使用はメソッドであり、メソッドのパラメーターはパラメーターを備えた匿名関数であり、関数本文は後で直接与えられます。このコードをどのように理解していますか?まず、コールバック関数の概念を理解しましょう。
まず、JSでは、関数は変数に割り当てることができ、関数のパラメーターリストにパラメーターとして配置できるオブジェクトでもあることを理解する必要があります。例えば:
コードコピーは次のとおりです。
var dosomething = function(a、b)
{
a + bを返します。
}
このコードは、匿名関数を定義することを意味します。名前がないことを除いて、この匿名関数は通常の関数と違いはありません。次に、匿名関数を可変dosomhingに割り当てます。次に電話します:
コードコピーは次のとおりです。
console.log(dosomething(2,3));
これは出力5です。
コールバック関数は、別の関数(親など)のパラメーターリストに配置され、パラメーターとして親に渡され、親機能本体の特定の位置で実行されます。抽象化するには、例をご覧ください。
コードコピーは次のとおりです。
//コールバックの概念を説明する
var doit = function(callback)
{
var a = 1、
b = 2、
c = 3;
var t = callback(a、b、c);
t + 10を返します。
};
var d = doit(function(x、y、z){
return(x+y+z);
});
console.log(d);
最初にDOIT関数を定義すると、パラメーターコールバックがあります。このコールバックはコールバック関数であり、名前は任意に撮影できます。関数本体を見ると、最初に3つの変数a、b、およびcを定義します。次に、コールバック関数を呼び出します。最後に、値が返されます。
以下はDOIT関数です。今すぐDoitを定義したとき、コールバックは定義されていないため、コールバックが何のためのものかわからなかったことに注意する必要があります。これは実際には理解しやすいです。関数を定義する場合、パラメーターは関数本文内のAを使用するような名前のみを与えますが、プロセス全体では何がわかりません。 2などの関数が指定されている場合にのみ。ご覧のとおり、この関数は合計関数を完了します。
上記のコードの実行プロセスは次のとおりです。
doit関数を呼び出すと、パラメーターは匿名関数です。 doitの関数本文を入力し、最初にa、b、cを定義し、次に匿名関数を今すぐ実行します。パラメーターはa、b、c、およびtを返し、最後にa t+10をdに戻します。
元の例に戻ると、app.use(...)は関数呼び出しです。使用方法は以前に定義されていたに違いないと想像できますが、ここでは与えられていません。これら2つの例を比較することで、すぐに理解できます。
nodejsとExpressを使用する場合、各メソッドまたは関数の関数定義を見つけることは不可能です。したがって、その定義でコールバックに渡されるパラメーターを把握してください。次に、メソッドまたは関数を呼び出すときに、パラメーター内の匿名関数を定義して、特定の関数を完了します。
以上!