Le bloc try-catch-finally est-il synchrone dans node.js?
J'ai un code en cours d'exécution dans un processus enfant dans un nœud de programme comme suit:
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");
Ce code est appelé à partir d'un autre nœud du programme, qui doit attendre jusqu'à ce que toutes les opérations dans ce fichier sont fait. Malheureusement, le processus de l'enfant est sortie avec le code 0, avant que tout le code sous la finally
bloc est exécuté.
Cela me mène à croire le try-catch-finally
est asynchrone. Est-ce exact?
source d'informationauteur krb686
Vous devez vous connecter pour publier un commentaire.
Votre question est confusion formulée.
L'ensemble de Javascript langue est entièrement synchrone; toutes les constructions de langage, y compris
catch
etfinally
blocs, exécute de manière synchrone avant d'exécuter la ligne de code suivante.Cependant, ils ne sont pas conscients de toutes les opérations asynchrones qui peuvent avoir commencé, et ne sera pas attendre pour eux à la fin.
Il existe des moyens pour surmonter cette:
1) https://github.com/CrabDude/trycatch
Voir aussi
http://nodejs.org/api/domain.html