我想读取文件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中完成此操作?
我试了一下,但是当我的代码深入了解回调和异常处理时,我放弃了。请教我干净的异步编程。 :)
答案 0 :(得分:0)
“但是当我的代码在回调和异常处理方面达到了六个级别时放弃了”...
这叫做“回调地狱”,它是异步编程所固有的。
您可以使用 wait.for ,这是我最近开发的 非常简单的 库,按顺序编程(如在您的伪代码中)避免回调地狱。 校验: http://github.com/luciotato/waitfor
你也可以谷歌“nodejs promises”,https://github.com/kriskowal/q 和“nodejs async lib”,https://github.com/caolan/async 但是考虑到promises和async libs增加了复杂性,以减轻回调地狱的痛苦(它们也提供了很多功能,但代价是增加了新的概念和更多的复杂性)。
注意:在您的示例的特定情况下,核心节点'fs'模块 - http://nodejs.org/api/fs.html - 使 例外“不应该阻塞节点” 并通过提供几乎所有功能的两个版本来简化回调地狱,一个标准异步,另一个阻止*同步。