我在节点程序中的子进程中运行了一些代码,如下所示:
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
块下的任何代码之前,子进程正在退出代码0。
这让我相信即使try-catch-finally
也是异步的。这是对的吗?
答案 0 :(得分:17)
你的问题令人困惑。
整个Javascript 语言是完全同步的;所有语言结构(包括catch
和finally
块)将在运行下一行代码之前同步执行。
但是,他们不知道可能已经开始的任何异步操作,并且不会等待它们完成。
答案 1 :(得分:1)