複数の jade ファイルを読み取ってコンパイルし、これらのファイルを使用する必要があります。以下のコードで bluebird promises ライブラリを使用しています。
var indexJadeFile = 'template/index.jade';
var otherJadeFile = 'template/other.jade';
function readAndCompileJade(jadeFile){
fs.readFileAsync(jadeFile, 'utf8').then(function(content){
console.log('reading jade file: ' , jadeFile);
return jade.compile(content, {
pretty : true,
filename : jadeFile,
basedir : templateBaseDir
});
})
}
promise.all([
readAndCompileJade(indexJadeFile),
readAndCompileJade(postJadeFile),
readAndCompileJade(sitemapJadeFile),
readAndCompileJade(archivesJadeFile)])
.then(function(results){
console.log('results block');
compiledIndex = results[0];
compiledPost = results[1];
compiledSitemap = results[2];
compiledArchives = results[3];
});
すべての jade ファイルが実行された後に then ブロックが実行されると仮定しました。しかし、実行すると、ステートメントのresults block
前に出力されていることがわかります。reading jade file
すべての promise が完了するのを待ってから、残りのブロックを実行するにはどうすればよいですか?