是否try-catch-finally块在node.js中同步?

我有一些代码运行在一个节点程序中的subprocess ,如下所示:

try{ var data = fs.readFileSync(urlPath, {"encoding":"utf8"}); } catch (err) { console.log("Error reading url file..."); throw err; } finally { console.log("File read!"); var array = data.split("\n"); console.log("Found " + array.length + " urls"); 

这个代码是从另一个节点程序调用的,需要等到这个文件中的所有操作完成 。 不幸的是,在执行finally代码块之前的任何代码之前,subprocess正在以代码0退出。

这让我相信即使try-catch-finally也是asynchronous的。 那是对的吗?

你的问题是混乱的措辞。

整个Javascript 语言是完全同步的; 所有的语言结构,包括catchfinally块,将在运行下一行代码之前同步执行。

但是,他们并不知道可能已经开始的任何asynchronous操作,也不会等待它们完成。

有一些方法可以解决这个问题:

1) https://github.com/CrabDude/trycatch

另请参阅http://nodejs.org/api/domain.html