EventEmitterをPromiseで制御できるようにするライブラリ
EventEmitterをPromiseで制御するで書いたようなことを楽に(楽か?)してくれるライブラリchoco.jsを作った。
以下はサンプルのようなコード。
main process
let ipc = require('ipc'),
fs = require('fs'),
choco = require('choco');
function getFileStat(filename) {
return new Promise(function(resolve, reject) {
fs.stat(filename, (err, stat) => (err) ? reject(err) : resolve(stat));
});
}
ipc.on('get-file-stat', function(event, params) {
let { filename } = params;
getFileStat(filename)
.then(function(stat) {
event.sender.send('get-file-stat-success', {
[choco.id]: params[choco.id],
stat,
});
})
.catch(function(err) {
event.sender.send('get-file-stat-failure', {
[choco.id]: params[choco.id],
err,
});
});
});
renderer process
let ipc = global.require('ipc'),
co = require('co'),
choco = require('choco');
choco.trigger = 'send';
co(function*() {
return yield choco(ipc, 'get-file-stat', {
filename: '/path/to/file'
});
}).then(function(result) {
console.log(result);
}).catch(function(err) {
console.error(err);
});
そんなに良くなった感じがしないなあ……