next
node.jsで多くの使用が見られます。
それは何ですか、それはどこから来ましたか?それは何をするためのものか?クライアント側で使用できますか?
申し訳ありませんが、ここでは例として使用されています:http : //dailyjs.com/2010/12/06/node-tutorial-5/
loadUser関数を探します。
next
node.jsで多くの使用が見られます。
それは何ですか、それはどこから来ましたか?それは何をするためのものか?クライアント側で使用できますか?
申し訳ありませんが、ここでは例として使用されています:http : //dailyjs.com/2010/12/06/node-tutorial-5/
loadUser関数を探します。
回答:
これは、Node.js制御フローコードの変数命名規則のようです。そこでは、実行する次の関数への参照がコールバックに渡され、実行が開始されます。
たとえば、次のコードサンプルをご覧ください。
投稿した例を見てみましょう:
function loadUser(req, res, next) {
if (req.session.user_id) {
User.findById(req.session.user_id, function(user) {
if (user) {
req.currentUser = user;
return next();
} else {
res.redirect('/sessions/new');
}
});
} else {
res.redirect('/sessions/new');
}
}
app.get('/documents.:format?', loadUser, function(req, res) {
// ...
});
loadUser
関数は、名前にバインドされている3番目の引数、関数を期待しますnext
。これは通常の関数パラメーターです。これは、次に実行するアクションへの参照を保持し、loadUser
(ユーザーが見つからない場合を除いて)一度実行されると呼び出されます。
next
この例では、名前に特別なものはありません。なんでも名前を付けることができました。
.next()
。彼はnext
オブジェクトのメソッドとして尋ねるようです。
return next();
return callback()
代わりに使用しましたreturn next()
これは、アクションのシリアル実行が必要な状況でコールバックを渡すときに使用される命名規則です。たとえば、ディレクトリのスキャン->ファイルデータの読み取り->データで何かを行います。これは、コールバックを深くネストすることを優先します。Tim CaswellのHowToNodeブログに関する次の記事の最初の3つのセクションでは、これについての概要を説明しています。
http://howtonode.org/control-flow
その投稿の2番目の部分の「順次アクション」セクションも参照してください。
これは基本的に、コードの特定の部分が実行されて完了した後にexpress.jsが使用するコールバックのようなものです。これを使用して、コードの一部が完了したことと、次に行うことを確認できますが、常にできることだけに注意してくださいres.send
各RESTブロックで1つ実行してください...
したがって、簡単なnext()
例として次のようなことができます。
app.get("/", (req, res, next) => {
console.log("req:", req, "res:", res);
res.send(["data": "whatever"]);
next();
},(req, res) =>
console.log("it's all done!");
);
アプリにミドルウェアが必要な場合にも非常に便利です...
ミドルウェア関数をロードするには、ミドルウェア関数を指定してapp.use()を呼び出します。たとえば、次のコードはルートパス(/)へのルートの前にmyLoggerミドルウェア関数をロードします。
var express = require('express');
var app = express();
var myLogger = function (req, res, next) {
console.log('LOGGED');
next();
}
app.use(myLogger);
app.get('/', function (req, res) {
res.send('Hello World!');
})
app.listen(3000);