Javascript NodeJs:fs.appendFile函数似乎错过了给定的最后一个字符串
我是nodejs新手,我在尝试append函数。 当我运行下面的代码时,它在提示用户输入后,简单地接收用户输入,并将关于fav singer的信息放入一个包含singer名称的文件中。和附加fav歌曲,似乎如果用户输入退出它应该附加到文件,但它不是??? 同时,如果添加了对appendFileSync(fn的同步版本)的更改,则退出 代码:Javascript NodeJs:fs.appendFile函数似乎错过了给定的最后一个字符串,javascript,node.js,fs,appendfile,Javascript,Node.js,Fs,Appendfile,我是nodejs新手,我在尝试append函数。 当我运行下面的代码时,它在提示用户输入后,简单地接收用户输入,并将关于fav singer的信息放入一个包含singer名称的文件中。和附加fav歌曲,似乎如果用户输入退出它应该附加到文件,但它不是??? 同时,如果添加了对appendFileSync(fn的同步版本)的更改,则退出 代码: 因为fs.appendFile是异步的。调用它时,io操作仅排队。不幸的是,您的脚本在真正的io操作发生之前退出 所以。您必须将fs.appendFileS
因为
fs.appendFile
是异步的。调用它时,io操作仅排队。不幸的是,您的脚本在真正的io操作发生之前退出
所以。您必须将
fs.appendFileSync
或fs.appendFile
与回调一起使用(第三个参数),调用回调时,执行所有进一步的活动。感谢您的回复,当我运行应用程序时,我输入-->MJ,然后敲打它,然后黑白,然后退出(输出文件第一次提到了两首歌曲/但没有写入退出。IO仅排队,您的意思是它在重新实际实现之前退出。
var readline = require ('readline');
var fs = require('fs');
var rl = readline.createInterface(process.stdin, process.stdout);
var singer = {
name:'',
songs: []
};
rl.question("What is your fav singer? ", function(answer) {
singer.name = answer;
//creating a file for this singer
fs.writeFileSync(singer.name+".md", `${singer.name}\n====================\n\n`);
rl.setPrompt(`What's your fav songs for ${singer.name} ?`);
rl.prompt();
rl.on('line', function(song) {
singer.songs.push(song.trim());
fs.appendFile(singer.name+".md", `* ${song.trim()} \n`);
//***** WHY IF ITS EXIT ITS NEVER APPEND IT TO THE FILE
console.log(`* ${song.trim()} \n`);
if (song.toLowerCase().trim() === 'exit') {
fs.appendFile(singer.name+".md", "Bye");
//***** WHY ITS NEVER APPEND IT TO THE FILE
rl.close();
} else {
rl.setPrompt(`what else would ${singer.name} say? ('exit'to leave)`);
rl.prompt();
}
});
});
rl.on ('close', function() {
console.log ("%s is a real person that says %j", singer.name, singer.songs);
process.exit();
});