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

“但是当我的代码通过回调和异常处理达到六级深度时放弃了”......

这就是所谓的“回调地狱”,它是异步编程所固有的。

可能的解决方案:

您可以使用我最近开发的一个非常简单的库wait.for来顺序编程(如在您的伪代码中)避免回调地狱。检查:http: //github.com/luciotato/waitfor

您也可以在 Google 上搜索“nodejs promises”、https://github.com/kriskowal/q 和“nodejs async lib”、https://github.com/caolan/async , 但考虑到 promises 和异步库会增加复杂性,以便减轻回调地狱的痛苦(它们也提供了很多功能,但是以添加新概念和更多复杂性为代价)。

注意:在您的示例的特定情况下,核心节点'fs'模块- http://nodejs.org/api/fs.html - 对“节点中的任何内容都不应阻塞”进行了例外处理,并通过提供两个版本来缓解回调地狱几乎所有功能,一个标准异步和另一个阻塞 *同步。

于 2013-08-28T04:21:28.087 回答