CoffeeScriptでasync.js
node.jsでasync.jsを使って非同期処理を書いてると、CoffeeScriptの方が奇麗かも、と思ったので試しに書いてみることに。
package.jsonからバージョンを取得して表示するだけの関数です。
環境:MacOS 10.7.3 / nodebrew 0.5.0 / node 0.6.13
JavaScript
var fs = require('fs') , async = require('async') ; async.waterfall([ function (callback) { fs.readFile('package,json', callback); } , function (data, callback) { callback(null, JSON.parse(data).version); } ] , function (err, version) { if (err) throw err; console.log('version: %s', version); });
CoffeeScript
fs = require 'fs' async = require 'async' do -> async.waterfall [ (callback) -> fs.readFile 'package.json', callback; return , (data, callback) -> callback null, JSON.parse(data).version; return ], (err, version) -> throw err if err console.log 'version: %s', version return return
CoffeeScriptの方はアローが並んで奇麗かなーと思ったけど、そうでもなかった……
追記:
async.jsを書きたかったのでこう書いたけれどpackage.jsonを読み込むだけなら
var data = require('package');
だけでおkなのです。