ノードコールバックをpromisifyする方法


このようにnodejsで古典的なコールバックを持つことを考えてください.
const fs = require('fs');

function readMyFile(myfile, options) {
    fs.readFile(myfile, options, function(err, file) {
        if(err) {
            console.log('err', err);
        } else {
            console.log('file', file);
        }
    });
}

readMyFile('myfile', 'utf8');
このようなことをしたいのなら
...
readMyFile('myfile', 'utf8')
    .then(file => console.log('file', file)
    ...
手動でコールバックをこのように約束できます.
const fs = require('fs');

function readMyFilePromise(myfile, options) {
    return new Promise((resolve, reject) => {
        fs.readFile(myfile, options, function(err, file) {
            if(err) {
                console.log('err', err);
                reject(err);
            } else {
                console.log('file', file);
                resolve(file);
            }
        });
    });
}

readMyFilePromise('myfile', 'utf8')
    .then(file => console.log('file', file))
    .catch(err => console.log('err', err));
良いニュースは、それを行うには、util moduleを使用することができます.utilはnodejsに組み込まれています.
こうするだけです.
const util = require('util');
const fs = require('fs');

const readPromise = util.promisify(fs.readFile);
readPromise('myfile', 'utf8')
    .then(file => console.log('file', file))
    .catch(err => console.log('err', err));

楽しい
:)