次のようなノードプログラムの子プロセスで実行されているコードがあります。
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
は非同期です。あれは正しいですか?
あなたの質問は紛らわしい言葉で書かれています。
Javascript全体言語は完全に同期しています。 catch
およびfinally
ブロックを含むすべての言語構造は、次のコード行を実行する前に同期的に実行されます。
ただし、開始された可能性のある非同期操作を認識しておらず、終了するのを待ちません。