Node.jsでnext
を多く使用しています。
それは何ですか、どこから来たのですか?それは何をするためのものか?クライアント側で使用できますか?
申し訳ありませんが、ここでは例として使用されています: 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
関数は、名前next
にバインドされている3番目の引数に関数を必要とします。これは通常の関数パラメーターです。実行する次のアクションへの参照を保持し、loadUser
が完了すると呼び出されます(ユーザーが見つからない場合を除く)。
この例では、next
という名前について特別なことはありません。私たちはそれを何でも名づけることができました。
アクションのシリアル実行が必要な状況でコールバックを渡すときに使用される命名規則です。スキャンディレクトリ->ファイルデータの読み取り->データで何かをします。これは、コールバックを深くネストすることよりも優先されます。 Tim Caswellの HowToNode ブログに関する次の記事の最初の3つのセクションでは、この概要を説明しています。
http://howtonode.org/control-flow
その投稿の2番目の部分のSequential Actionsセクションも参照してください。
基本的には、コールバックのようなものです-express.jsコードの特定の部分が実行および実行された後に使用します。これを使用して、コードの一部が完了し、次に何をしたいかを確認できます。しかし、常に注意してくださいあなたはそれぞれで1つだけres.send
を行うことができますREST block ...
したがって、簡単な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);