11

次のように、ノード プログラムの子プロセスでいくつかのコードを実行しています。

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これは、非同期でさえあると私に信じさせています。あれは正しいですか?

4

2 に答える 2

18

あなたの質問は紛らわしい表現です。

Javascript言語全体が完全に同期しています。catchとブロックを含むすべての言語構造はfinally、次のコード行を実行する前に同期的に実行されます。

ただし、開始された可能性のある非同期操作は認識されず、完了するまで待機しません。

于 2013-07-10T13:47:53.043 に答える
1

これを克服するにはいくつかの方法があります。

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

http://nodejs.org/api/domain.htmlも参照してください

于 2014-08-13T15:15:51.553 に答える