2012-03-01から1ヶ月間の記事一覧

アダプタ的な関数で非同期コールバックをつなぐ

昨日のエントリでは、「2つのファイルを同時に読み、結果を連結して書き出し、書き出した内容をもう一度読む」という処理を以下のコードで実現しました。 var gate = require('gate'); var fs = require('fs'); var latch = gate.latch(); fs.readFile('pat…

問題は非同期コールバックのネストにあるんじゃない、待ち合わせにあるんだ!

Node.jsでのプログラミングで問題としてよく挙げられるコールバック地獄。 ずっと、非同期コールバックがネストすることが問題なんだと思っていました。でも、そうじゃない。ネストすればクロージャが使える(内側の関数から外側の関数スコープにある変数を…

関数の数珠つなぎ 逐一版

そういえば、一週間くらい前、変な夢をみたんですよね。関数がいつまでたっても関数を返してくれるばかりで実質的な処理をしてくれなくて苦しむという。 たんに関数を返す条件と実質的に実行する条件を決めてやればいいだけなのですが、夢の中ではそれに気づ…

node.jsで使える非同期コントロールフローライブラリ nue 0.6.0 リリース

0.6.0をリリースしました。npm install nue でインストールできます。 https://github.com/nakamura-to/nue CHANGELOG 新機能 - デバッグをサポートしました。`NODE_DEBUG=nue` が使えます。 変更 - NueAsyncError を改善しました。NueAsyncError は通常のEr…

関数の数珠つなぎ

nueでは、独立に定義された関数を数珠つなぎにしています。 その中核を担っているコードはこんなです。 function chain(functions) { return functions.reduceRight(function (next, curr) { return function () { curr.apply({next: next}, arguments); } }…

複数ファイルを同時ダウンロードして順番に書き出す

@yssk22 さんの node.js ハンズオン資料に「複数ファイルを同時ダウンロードして順番に書き出す」というサンプルがあります。 http://dl.dropbox.com/u/219436/node.js/handson/build/html/intro/async_io.html#id8 今回は、このサンプルを拝借して、同等の…

関数の数珠つなぎ もしくは インタフェースの数珠つなぎ

JavaScriptで書いた関数の数珠つなぎ(http://d.hatena.ne.jp/taedium/20120310/p2)ですが、Javaでもやってみました。 JavaScript版とまったく同じ処理ではないですが、ある関数の実行結果を次の関数の引数としています。当然、型の制約を受けたりクロージ…

node.jsで使える非同期コントロールフローライブラリ nue 0.5.0 リリース

0.5.0をリリースしました。npm install nue でインストールできます。 https://github.com/nakamura-to/nue CHANGELOG 新機能 - nue.as関数を導入し、非同期コールバックの引数を次の関数の引数にマッピングできるようにしました。 変更 - step関数のコンテ…