1

ファイル A のすべてのバイトを読み取り、各バイトから 0x80 を減算し、結果をファイル B に書き込みます。

ここにいくつかの擬似コードがあります:

try:
    open file A for reading
    open file B for writing

    loop until EOF:
        x = next byte from file A
        x = x - 0x80;
        write x to file B

finally:
   close file A
   close file B

非同期ファイル システム関数を使用して node.js でこれを行うにはどうすればよいですか?

私は試してみましたが、コードがコールバックと例外処理で半ダースの深さになったときにあきらめました。きれいな非同期プログラミングを教えてください。:)

4

1 に答える 1

0

「しかし、私のコードがコールバックと例外処理で6つのレベルの深さになったときにあきらめました」...

これは「コールバック地獄」と呼ばれ、非同期プログラミングに固有のものです。

可能な解決策:

私が最近開発した非常に単純なlib であるwait.forを使用して、コールバック地獄を回避しながら (疑似コードのように) 順次プログラムすることができます。チェック: http://github.com/luciotato/waitfor

「nodejs promises」、https://github.com/kriskowal/q および「nodejs async lib」、https ://github.com/caolan/async をグーグルで検索することもできますが、promise と async libs を使用すると複雑さが増すことを考慮してください。コールバック地獄の痛みを和らげます (多くの機能も提供しますが、新しい概念と複雑さを追加するという代償を払います)。

注: あなたの例の特定のケースでは、コア ノード 'fs' モジュール- http://nodejs.org/api/fs.html - は「ノードで何もブロックしないでください」という例外を作成し、2 つのバージョンを提供することでコールバック地獄を緩和します。ほぼすべての関数の 1 つが標準の非同期で、もう 1 つが *Sync をブロックしています。

于 2013-08-28T04:21:28.087 に答える