メールを送信してからデータベースを更新したいとしましょう。両方のアクションは非同期です。普段ならこんな感じで書きます。
send_email(function(err, id){
if(err){
console.log("error");
}else{
update_database(id,function(err, id){
if(err){
console.log("error");
}else{
console.log("success");
}
});
}
});
代わりにミドルウェアでこれを行いたいと思います。
var mid = {};
mid.send_email = function(){
return function(next){
send_email(function(err,id){
if(err){
console.log("error");
}else{
next(id);
}
});
}
}
mid.update_database = function(){
return function(id,next){
update_database(id,function(err,id){
if(err){
console.log("error");
}else{
next(id);
}
});
}
}
mid.success = function(){
return function(id,next){
console.log("success")
next(id);
}
}
ミドルウェアのスタック。
middleware.use(mid.send_email());
middleware.use(mid.update_database());
middleware.use(mid.success());
手元にある主な質問は 2 つあります。
- ネストされたコールバックの代わりにミドルウェアを使用するにはどうすればよいですか?
- に変数を渡すことは可能
next()
ですか?