util.promisify()でcallbackスタイルの関数をpromise化
node.jsがv8になり、util.promisifyが追加されました。
この機能は、callbackスタイルをpromiseに変換する機能となります。
以下で、試して見たいと思います。
注意事項
- node.jsのcallbackスタイルの関数であること。
(error, value) => ...
(calback関数の最初の引数はerrorである必要があります。) - callbackを最後の引数としていること。
util.promisify()を試す
以下の処理は、カレントディレクトリにあるtext.txtを出力するだけの処理です。
その中で、fs.readFileをutil.promisifyでpromiseに変換した上で、async/awaitを使用して同期処理の様に扱っています。
'use strct';
const fs = require('fs');
const util = require('util');
const readFileAsync = util.promisify(fs.readFile);
const filePath = './test.txt';
async function promisifyTest() {
try {
const text = await readFileAsync(filePath, {encoding : 'utf8'});
console.log(text);
} catch (error) {
console.log(error);
}
}
promisifyTest();