是否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 语言是完全同步的; 所有的语言结构,包括catch
和finally
块,将在运行下一行代码之前同步执行。
但是,他们并不知道可能已经开始的任何asynchronous操作,也不会等待它们完成。