Evenements asynchrones qui ne se passent pas
Bonjour,
Je veux transmettre un fichier après traitement.
- J'envoie donc sur la cible la command open (ligne 3) -> elle passe
- J'ouvre le fichier d'origine et je prends les lignes une par une (lignes 8 à 11),
- Je traite chacune d'elle (lignes 12 à 27)
- Je l'écris sur la cible (ligne 28)
- Je ferme le fichier cible (avec close ligne 31)-> ça marche aussi
C'est sans doute un pb de synchronisation mais comme je suis débutant en typescript je ne le trouve pas.
Qqn peut m'aider ?
Merci d'avance
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| async UploadFile2(file: string, target: string): Promise<void> {
//@note UploadFile2
let result = await this.SendAndRecv("f = open('" + target + "', 'w')\r\n", false);
let commentaire: boolean = false;
let ligneVide: boolean = false;
const clearComments=this.clearComments;
var lineReader = require('readline').createInterface({
input: require('fs').createReadStream(file)
});
lineReader.on('line', async function (line) {
if (clearComments) {
line = line.trimEnd();// Suppression des espaces en fin de ligne
line = line.replace(/#.*/g, ""); // Suppression des commentaires mono ligne #
line = line.replace(/"{3}(.+?)"{3}/g, ""); // Suppression des commentaires mono ligne """
if (line.match(/"{3}/) && !commentaire) {// Suppression des commentaires multi ligne
commentaire = true;
line = line.replace(/"{3}.*/, "");
}
if (line.match(/"{3}/) && commentaire) {// Suppression des commentaires multi ligne
commentaire = false;
line = line.replace(/.*"{3}/, "");
}
line.trimStart() == ""?ligneVide=true:ligneVide=false
}
if (!commentaire && !ligneVide) {
line=line+"\r\n";
result =await this.SendAndRecv("f.write(" + line +")\r\n", false);
}
});
result = await this.SendAndRecv("f.close()\r\n", false);
} |