connect.jsミドルウェアのbasicAuthの非同期コールバックパターンと同期コールバックパターンの違いは何だろうと思っていました。
nodejsが単一のスレッド化されたイベントループ上にあることは理解していますが、同期の「コールバック」はコールバック関数であるため、非同期です。だから、何が違うのかわからない。
connect.jsミドルウェアのbasicAuthの非同期コールバックパターンと同期コールバックパターンの違いは何だろうと思っていました。
nodejsが単一のスレッド化されたイベントループ上にあることは理解していますが、同期の「コールバック」はコールバック関数であるため、非同期です。だから、何が違うのかわからない。
どちらの場合も、コールバックは実際にはによって同期的に呼び出されますbasicAuth
が、非同期の場合は、コールバック関数から結果を返す代わりにfn
、コールバックにパラメーターを呼び出して結果を返します。basicAuth
ここからの標準的なサンプルコードに示されているように。
// Sync case, where the callback function returns true/false
connect(
connect.basicAuth(function(user, pass){
return 'tj' == user & 'wahoo' == pass;
})
);
// Async case, where User.authenticate uses an asynchronous call to determine the validity
// of the user, and fn is called by that function to deliver the true/false result back to
// basicAuth once the async call completes.
connect(
connect.basicAuth(function(user, pass, fn){
User.authenticate({ user: user, pass: pass }, fn);
})
);