
6
1
章
Node.js
の世界へようこそ
このモードでは読み込み可能なデータが存在しなければ失敗して、リターンコード
EAGAIN
を返してき
ます。
このようなノンブロッキング
I/O
の処理方法として、データが戻されるまでループを回してポーリン
グする「ビジーウェイト(
busy-waiting
)」と呼ばれる方法があります。次の擬似コードはビジーウェイト
の例で、ノンブロッキングモードで複数のリソースからデータを読んでいます。
resources = [socketA, socketB, pipeA];
while(!resources.isEmpty()) {
for(let i = 0; i < resources.length; i++) {
resource = resources[i];
let data = resource.read(); //
読み込みを試みる
if(data === NO_DATA_AVAILABLE) //
読み込むデータがない
continue;
if(data === RESOURCE_CLOSED) //
リソースはクローズされた
resources.remove(i); //
リストから削除
else
consumeData(data); //
データの受信と処理
}
}
この本では
let
による変数の宣言など
ES2015
(
ES6
)の機能を使っています。付録
A
に
ES2015
の主な機能をまとめてありますので必要に応じて参照してください。なお、よ
り詳しくは『